日付はいつですか?


26

チャレンジ

奇妙なことに、これはまだ行われていません。現在の日付を出力します。

ルール

従うべき日付形式は次のとおりです。

YYYY-MM-DD

月と日が10未満の場合、ゼロを埋め込む必要がある場所。

たとえば、プログラムが2017年5月24日に実行される場合、出力する必要があります

2017-05-24

日付は常にUTCまたはローカル日付のいずれかです。

あなたは飛躍年を処理する必要があります。つまり、うるう年の2月は29日ですが、通常の年は28日です。

勝ち

バイト単位の最短コードが優先されます。


14
ハッピー10k担当者!
ローハンジュンジュンワラ

1
そして、私が今まで見た中で最も急速に成長しているスレッドにおめでとう。:D
タイタス

@Titusこんにちは、World!:D
ベータ崩壊

...通常の2月には31日のコースがあります
-edc65

@ edc65私は実際に2月はうるう年で29日間の長さであることが知られている必要があります:P
ベータ崩壊

回答:


12

Bash16 7バイト

Neil(およびfergusq)のおかげで-8バイト(出力にパイプは不要)
-12431234123412341234123のおかげで-1バイト(フラグ付きの組み込みオプションを使用-I!)

date -I

オンラインでお試しください!


2
なぜecho $(...)
ニール

出力する必要はありませんか?
ジョナサンアラン

6
date既に出力されている場合、出力は標準出力にパイプされます。にパイプする必要はありませんecho。パイプで標準出力にパイプします。オンラインでお試しください!
fergusq

しかし、あなたが本当に使いたいとしてもecho、少なくともecho `date +%F`
マナトワーク

5
なぜ使用しないの-Iですか?
12431234123412341234123





4

SQLite、13文字

select date()

いい子、SQLite。他のSQLダイアレクトには通常、current_dateまたはのいずれかが必要date(now())です。

サンプル実行:

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

1
MySQLにはcurdate
Titus



3

Excel、24バイト

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

Excelは3だけで4桁の年を実行しyます。


2
Googleシートにが追加され")ます。Excelはしません。最後に追加されますが、プロンプトが表示された後にのみ追加される)ため、追加のユーザー入力が必要になり、スコアが再び上がります。既定でISO日付形式を使用した地域設定を許可していない限り、おそらく24バイトがExcelの最短回答です。これは議論の余地があります。
エンジニアトースト

@EngineerToastありがとう。それを修正します。
スコットミルナー

2

1
以来sys.date、すでに機能である、あなたが追加する必要はありません()、これは唯一の8バイト:)であるので、
JADを

@JarkoDubbeldam真実ではない、()が必要です
D.ネルソン

@ D.Nelson codegolf.meta.stackexchange.com/questions/2419/...は Sys.Date関数であり、その解決策として十分であろう。明示的に呼び出す必要はありません。
-JAD

@JarkoDubbeldamは通常そうですが、チャレンジは「現在の日付をISO-8601形式で出力する」ことなので、実際に出力する必要があると思います。
ジュゼッペ

1
ええ、そして最後の行でSys.Date出力を行います。で始まるソリューションがある場合に似ていますがfunction(x)、明示的な呼び出しでも終了しません。組み込みのスコアリング方法です。
JAD


2

アリス、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.

これがゴルフに適している方法の1つは%、ゼロを除算してCardinalモードでプログラムを終了するためにを再利用することですが、私が思いついた唯一のレイアウトは次のとおりです。

\;T
\%o'

しかし、ここでは、%実際にプログラムを終了しません。111('o)を事前にプッシュするため、ゼロによる除算はありません。

原則%として、を取り除くために再利用することも可能かもしれません;。なぜなら、時間の前後で日付を分割しようとすると、単に時間を破棄するからです。


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電話で包む必要があります。
テイラースコット

2
そのために@TaylorScott ?format(now,"yyyy-mm-dd")使用するには、nowより短いdate
Greedo

1
@Greedo、それは正しいです。これは、私の知る限り、VBAを使用してこの目標を達成するための最短の方法です
テイラー・スコット

1
@TaylorScottはこれを指摘してくれてありがとう、私はシステムの日付設定への依存については知りませんでした。この日付形式、私のPCおよび私の国では一般的にデフォルトであるため、ここでは少し自信過剰でした。
マチェイリピンスキー


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

CJam22 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フルーツ

@ Challenger5それはクールです。ありがとう
-FrodCube



1

Oracle SQL、46バイト

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

1

Powershell、26 17バイト

Date -f yyy-MM-dd

9バイトの@ConnorLSWに感謝します。


ここでたくさん節約できます。date -f 'yyyy-MM-dd'
colsw

ありがとう。Powershellは初めてです。そこで、私はここで自分の運を試しました
シバプラサート・ヴァディベル

@Shivaprasath V-心配はいりません。必要に応じて、より基本的なPSゴルフトリックの役立つ投稿をこのスレッドで確認してください。
colsw


1

MATLAB / オクターブ25 15バイト

datestr(now,29)

オンラインでお試しください!


組み込み関数nowは、奇妙なMATLABシリアル形式で現在のシステム日付を返します。

datestrは奇妙なシリアルフォーマットを要求されたフォーマットの文字列にフォーマットします-この場合'YYYY-mm-dd'です。MATLABには、の事前定義された形式のリストがあることがわかりますdatestr。ISO8601はそのうちの1つであり、29バイトで表され、10バイトの節約が可能です。


1

パイソン2 53の  40バイト

GáborFeketeのおかげで-10バイト(日付オブジェクトのデフォルト形式はISO-8601です)

from datetime import*
print date.today()

オンラインでお試しください!

どうやって?

datetime.date.today()datetime.dateローカル日付情報を含むオブジェクトを返します。

printそのオブジェクトの文字列表現を出力します、これはオブジェクトの__str__関数を呼び出します。

ドキュメントから:

  • date.__str__():aについてはdate dstr(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バイトで、日時を使用します。さらに短いバージョンが削除されるのはなぜですか?
ガボールフェケテ

@GáborFeketeありがとう(本当に投稿すべきだったと思う、それは十分に異なっている)。他の回答は、正しくフォーマットされた文字列を印刷しなかったため、おそらく削除されました。これが実際に機能する理由についての説明を追加しました(が含まれている限りprint)。別の3つの操作(悪)を保存しましたimport*
ジョナサンアラン

私は望んでいましたが、私よりも短い別の解決策がありましたが、何らかの理由で削除されました。
ガボールフェケテ

...現在print、削除された後に削除されていないが含まれるように編集されています。
ジョナサンアラン

1

クリスタル30バイト 24バイト 21バイト

-6 ニッククリフォードのおかげ

-3 Ruby でsnail_の答えを見ることから

p Time.now.to_s("%F")

オンラインでお試しください!


2
使用できると確信しています%F。また、PPCGでCrystalを見るのもいいですね!
ニッククリフォード

1
@Nick Clifford私はそれをTIOで見て、かっこいい名前があると思った。
-TitusLucretius


1

C#、46 45バイト

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

@raznagulのおかげで1バイト節約できました。


2
どこからダウンロードできますSytemか?
エリックアウトゴルファー

6
@EriktheOutgolferそれの私の周りに作成されたラッパーのカスタムSystem私は同じタイプミスをして保持するので、名前空間を...
TheLethalCoder

4
ローカルで作成したものは、質問が行われる前に公開されない限り、PPCGで許可されないことを知っています。:P
エリックOutgolfer

1
@EriktheOutgolferくそー、次回はもっと短いラッパーも作成します
...-TheLethalCoder

1
年の先行ゼロは不要なので、フォーマット文字列"yyy-MM-dd"も機能します。
raznagul

1

Javaの8、26の、32バイト

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

Kevin Cruijssenのおかげでフォーマットを修正


うわー、Javaは実際には、短い D:私は、私は一日見たいと思ったことはなかっただろう...
ベータ崩壊

@BetaDecay短いですが、現在は標準のcodegolfルールに準拠していません。スニペットではなく関数である必要があり、必要なインポートも同様にカウントする必要があります。そのため、()->java.time.LocalDate.now().toString()代わりにすべきです。その後、再び、あなたはゴルフができる.toString()ために+""、それはなるように、()->java.time.LocalDate.now()+""合計(に32バイト)。
ケビンCruijssen

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);}

ティムテックは、すべてのスペースが必要なわけではないことを指摘しました

試してください!


これらのスペースのいくつかを削除できませんか?
ティムテック

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.