날짜가 뭐야?


26

도전

이상하게도 아직 완료되지 않았습니다 : 현재 날짜를 출력하십시오.

규칙

따라야하는 날짜 형식은 다음과 같습니다.

YYYY-MM-DD

월과 일이 10보다 작 으면 0으로 채워 져야합니다.

예를 들어, 프로그램이 2017 년 5 월 24 일에 실행되면 출력되어야합니다.

2017-05-24

날짜는 항상 UTC 또는 현지 날짜 일 수 있습니다.

윤년을 처리해야합니다. 즉 윤년에는 2 월은 29 일이지만 보통 연도는 28 일입니다.

승리

바이트 단위의 최단 코드가 이깁니다.


14
행복한 10k 담당자!
Rohan Jhunjhunwala

1
그리고 내가 본 것 중 가장 빠르게 성장하는 스레드를 축하합니다. : D
Titus

@Titus 안녕하십니까, 월드! : D
베타 부패 17 년

... 2 년은 보통 31 일
edc65

@ edc65 2 월이 윤년에 29 일이라는 것을 정말로 알고 있었을 것입니다. : P
Beta Decay

답변:


12

배쉬 , 16 7 바이트

Neil (및 fergusq) 덕분에 -8 바이트 (출력하는 데 파이프 필요 없음)
-12431234123412341234123 덕분에 -1 바이트 (내장 옵션을 플래그와 함께 사용 -I!)

date -I

온라인으로 사용해보십시오!


2
echo $(...)?
Neil

출력 할 필요가 없습니까?
Jonathan Allan

6
date출력은 이미 stdout으로 파이프됩니다. 에 파이프 할 필요가 없습니다 echo.이 파이프를 stdout에 파이프합니다. 온라인으로 사용해보십시오!
fergusq

그러나 당신이 정말로 사용하고 싶더라도 echo, 적어도 echo `date +%F`.
manatwork

5
왜 사용하지 -I않습니까?
12431234123412341234123

10

PHP, 17 바이트

<?=date('Y-m-d');

1
실제로 YYYY-MM-DDThh:mm:ss+hh:mmISO 8601 형식의 날짜이며 11 바이트입니다. <?=date(c);전체 내용을 인쇄하십시오. ;)
Titus

<?=strstr(date(c),T,1);는 C 형식 좀 기회를 제공합니다
요 르그 Hülsermann



5

자바 스크립트 (ES6), 34 바이트

_=>new Date().toJSON().split`T`[0]

f=

_=>new Date().toJSON().split`T`[0]

console.log(f());


흠, 같은 길이_=>new Date().toJSON().slice(0,10)
Steve Bennett

4

SQLite, 13 자

select date()

좋은 소년, SQLite. 다른 SQL 언어는 일반적으로 current_date또는을 필요로합니다 date(now()).

샘플 실행 :

bash-4.4$ sqlite3 <<< 'select date()'
2017-05-24

1
MySQL은curdate
Titus

4

Mathematica, 20 바이트

DateString@"ISODate"

9
가끔 티카이가 있는지 확인하지 이러한 문제로 와서 내장,하지만 그것이 무엇인지 볼
PunPun1000


3

엑셀, 24 바이트

=TEXT(NOW(),"yyy-mm-dd")

Excel은 여전히 ​​3으로 만 4 자리 연도를 수행합니다 y.


2
Google 시트에을 추가합니다 "). 엑셀은 그렇지 않습니다. 마지막에 추가 )하지만 메시지가 표시된 후에 만 ​​추가 사용자 입력이 필요하며 점수를 다시 올릴 수 있습니다. 우리는 기본적으로 ISO 날짜 형식을 사용하여 국가 별 설정이 가능하고 그 않는 한 24 바이트는 아마 가장 짧은 엑셀 대답 논의를 위해 .
엔지니어 토스트

@EngineerToast 감사합니다. 내가 고칠 게
Scott Milner 17 년

2

R , 10 바이트

Sys.Date()

온라인으로 사용해보십시오!


1
때문에 sys.date이미 함수, 당신은을 추가 할 필요가 없습니다 ()이것은 단지 8 바이트 : 그래서,
JAD을

@JarkoDubbeldam은 사실이 아닙니다. () 필요합니다
D. Nelson

@ D.Nelson codegolf.meta.stackexchange.com/questions/2419/… Sys.Date 는 함수이므로 솔루션으로 충분합니다. 명시 적으로 호출 할 필요가 없습니다.
JAD

@JarkoDubbeldam이 일반적입니다.하지만 도전은 '현재 날짜를 ISO-8601 형식으로 출력하는 것'이므로 실제로 출력해야한다고 생각합니다.
주세페

1
글쎄, 그리고 마지막 줄은 Sys.Date당신을 위해 출력을 수행합니다. 로 시작하는 솔루션이있을 때와 비슷하지만 function(x)명시적인 호출로도 끝나지 않습니다. 내장 점수를받는 방식입니다.
JAD


2

Alice , 9 바이트

/oT\
@%;'

온라인으로 사용해보십시오!

설명

정확한 제어 흐름을 독자에게 연습으로 남겨 두 겠지만 서수 모드에서 실행되는 선형화 된 코드는 다음과 같습니다.

%T'T%;o@

그리고 여기 그것이하는 일이 있습니다 :

%   Split an implicit empty string around an implicit empty string. Really doesn't
    do anything at all.
T   Push the current datetime as a string like "2017-05-24T20:53:08.150+00:00"
'T  Push "T".
%   Split the datetime string around the "T", to separate the date from the time.
;   Discard the time.
o   Output the date.
@   Terminate the program.

이것이 골프가 될 수있는 한 가지 방법은 %0으로 나누는 Cardinal 모드에서 프로그램을 종료 하기 위해 재사용하는 것입니다. 그러나 내가 얻은 유일한 레이아웃은 다음과 같습니다.

\;T
\%o'

그러나 여기서는 %실제로 프로그램을 종료하지 않습니다. 왜냐하면 111 ( 'o)을 미리 눌렀으므로 0으로 나누지 않습니다.

원칙적으로 시간을 기준으로 날짜를 나누려고하면 단순히 시간을 버릴 것이기 때문에를 %제거하기 위해 재사용 할 수도 있습니다 ;.


2

SmileBASIC 3, 29 바이트

SB에 날짜 문자열이 내장되어 있지만 형식이 잘못되었습니다! 대시 대신 슬래시를 사용합니다. 또한 자체 존중 BASIC이므로 전역 대체 기능이 없습니다. 내가 직접해야한다고 생각합니다 ...

D$=DATE$D$[4]="-
D$[7]="-
?D$

2

VBA, 5 25 바이트

?Date 시스템 짧은 날짜 설정에 따라 예측할 수 없음

?Format(Now,"yyyy-mm-dd")

산출:

2017-05-25 

6
이 답변은 매우 휘발성이며 귀찮은 사람은 시스템 설정 날짜 형식 ([설정-> 날짜 및 시간 Win10])을 'YYYY-MM-DD . The default format for this is M / D로 설정 한 사용자에게 전적으로 의존하므로 대부분의 컴퓨터에서 작동하지 않습니다. / YYYY`이므로 Date함수 의 출력은 입니다 5/25/2017. 이 문제를 해결하려면 답변을 Format전화로 싸야합니다.
Taylor Scott

2
@TaylorScott를 ?format(now,"yyyy-mm-dd")사용하는 now것이 그보다 짧습니다date
Greedo

1
@Greedo, 맞습니다. 이것은 내가 아는 한, VBA를 사용하여이 목표를 달성하는 가장 짧은 방법입니다
Taylor Scott

1
@TaylorScott 이것을 지적 해 주셔서 감사합니다. 시스템 날짜 설정에 대한 의존성을 알지 못했습니다. 이 날짜 형식 내 PC 및 일반적으로 국가의 기본값이므로 여기서 약간 과신했습니다.
Maciej Lipinski


1

QBIC , 33 바이트

B=_D?_sB,-4|+@-`+_sB,2|+A+_sB,4,2

설명:

B=_D        Assign the system's date to B$
            This is in American mm-dd-yyyy format, so we'll need to do some reformatting
?_sB,-4|    PRINT substring B, take 4 chars from the right
 +@-`         plus the string literal "-", now A$
 +_sB,2|      plus the leftmost two chars
 +A           and A$ again
 +_sB,4,2     plus the middle part.

1

CJam , 22 15 바이트

et3<{sY0e[}%'-*

온라인으로 사용해보십시오!

Challenger5 덕분에 -7 바이트

설명:

et                       Get array with [year,month,day,stuff...]
  3<                     Slice array to get [y,m,d] 
    {                    For each item do:
     s                     To string
      Y0e[                 add a 0 to the beginning of the string if it is shorter than 2 chars.
          }%             End for each
            '-*          Join the array with "-" as a separator

e[15 바이트에 (패드 배열)을 사용할 수 있습니다 .et3<{sY0e[}%'-*
Esolanging Fruit

@ Challenger5 멋지다. 감사
FrodCube



1

Oracle SQL, 46 바이트

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL

1

파워 쉘, 26 17 바이트

Date -f yyy-MM-dd

9 바이트에 대한 @ConnorLSW 덕분입니다.


여기서 많이 절약 할 수 있습니다. date -f 'yyyy-MM-dd'
colsw

고마워요 Powershell을 처음 사용합니다. 그래서 나는 여기에서 행운을 시험했습니다
Sivaprasath Vadivel

@Shivaprasath V - 걱정은 확인 이 스레드 당신이 원하는 경우 기본적인 PS 골프 트릭에 도움이 게시물의 몇 가지를 들어.
colsw


1

MATLAB / 옥타브 , 25 15 바이트

datestr(now,29)

온라인으로 사용해보십시오!


내장 함수 now는 현재 시스템 날짜를 이상한 MATLAB 직렬 형식으로 반환합니다.

datestr이상한 직렬 형식을 요청 된 형식의 문자열로 형식화합니다 (이 경우) 'YYYY-mm-dd'. MATLAB에는에 대해 미리 정의 된 형식의 목록이 있습니다 datestr. ISO8601은 그중 하나이며 숫자 29로 표시되며 10 바이트를 절약 할 수 있습니다.


1

파이썬 2 ,  53  40 바이트

Gábor Fekete 덕분에 -10 바이트 (ISO-8601은 날짜 개체의 기본 형식)

from datetime import*
print date.today()

온라인으로 사용해보십시오!

방법?

datetime.date.today()datetime.date현지 날짜 정보가 포함 된 객체를 반환합니다 .

print해당 객체의 문자열 표현을 인쇄하면 객체의 __str__함수를 호출합니다 .

로부터 문서 :

  • date.__str__():의 date d경우str(d) 동일하다 d.isoformat().

  • date.isoformat(): ISO 8601 형식으로 string날짜를 나타내는을 반환합니다 . 예를 들면 다음과 같습니다 .‘YYYY-MM-DD’date(2002, 12, 4).isoformat() == '2002-12-04'


1
import datetime;print datetime.date.today()이것은 단지 43 바이트이며 datetime을 사용합니다. 더 짧은 버전이 왜 삭제됩니까?
Gábor Fekete

@ GáborFekete 감사합니다 (실제로 게시해야한다고 생각합니다. 충분히 다릅니다). 다른 답변은 올바른 형식의 문자열을 인쇄하지 않았기 때문에 삭제되었을 수 있습니다. 왜 이것이 실제로 작동하는지에 대한 설명을 추가했습니다 (하나가 포함되어있는 한 print). 다른 세 가지 일 (사악)을 구했습니다 import*.
Jonathan Allan

나는 원했지만 내 것보다 더 짧은 다른 솔루션이 있었지만 어떤 이유로 삭제되었습니다.
Gábor Fekete

... 지금 print삭제 된 후 삭제되지 않은 시간 을 포함하도록 편집되었습니다 .
Jonathan Allan


1

녹, 84 바이트

extern crate chrono;fn main(){print!("{}",chrono::Local::now().format("%Y-%m-%d"));}

1

C #, 46 45 바이트

_=>System.DateTime.Now.ToString("yyy-MM-dd");

@raznagul 덕분에 바이트를 저장했습니다.


2
어디에서 다운로드 Sytem합니까?
Outgolfer Erik

6
@EriktheOutgolfer 그것은 System같은 오타를 계속했기 때문에 네임 스페이스 주위에 만든 사용자 정의 래퍼입니다 ...
TheLethalCoder

4
PPCG에서 로컬로 생성 한 항목은 질문을하기 전에 게시되지 않는 한 허용되지 않습니다. : P
Outgolfer Erik

1
@EriktheOutgolfer 젠장, 다음 번에 더 짧은 래퍼도 만들겠습니다 ...
TheLethalCoder

1
연도의 선행 0이 필요하지 않으므로 형식 문자열 "yyy-MM-dd"도 작동합니다.
raznagul

1

자바 8, 26 32 바이트

()->java.time.LocalDate.now()+""

Kevin Cruijssen의 고정 형식


와우, 자바는 실제로 짧다 . 나는 내가 그날을 볼 줄은
Beta Decay

@BetaDecay 짧지 만 현재 표준 코드 골프 규칙을 준수하지 않습니다. 스 니펫 대신 함수 여야하며 필요한 가져 오기도 계산해야합니다. 따라서 ()->java.time.LocalDate.now().toString()대신 해야합니다 . 그럼 다시, 당신은 골프 수 .toString()에를 +""가가되도록, ()->java.time.LocalDate.now()+""총 (에 32 바이트 ).
케빈 크루이 센

1

C ++ 14, 143 바이트 139 바이트

#include <cstdio>
#include <time.h>
int main (){time_t t;char D[11];time(&t);strftime(D,sizeof D,"%Y-%m-%d",localtime(&t));printf("%s",D);}

Timtech는 나에게 모든 공간이 필요하지 않다고 지적했다.

날 시험 해봐!


그 공간을 몇 개 제거 할 수 없습니까?
Timtech

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.