Welches Datum haben wir?

26

Herausforderung

Seltsamerweise wurde dies noch nicht getan: das aktuelle Datum ausgeben.

Regeln

Das Datumsformat, dem Sie folgen sollten, lautet wie folgt:

YYYY-MM-DD

Wo der Monat und der Tag mit Nullen aufgefüllt werden sollen, wenn sie kleiner als 10 sind.

Wenn das Programm beispielsweise am 24. Mai 2017 ausgeführt wird, sollte es ausgegeben werden

2017-05-24

Das Datum kann entweder immer in UTC oder im lokalen Datum liegen.

Sie müssen Sprünge Jahre behandeln. dh in Schaltjahren hat der Februar 29 Tage, in einem normalen Jahr jedoch 28 Tage.

Gewinnen

Kürzester Code in Bytes gewinnt.

Beta-Zerfall
quelle
14
Happy 10k rep!
Rohan Jhunjhunwala
1
Und herzlichen Glückwunsch zu dem am schnellsten wachsenden Faden, den ich je gesehen habe. : D
Titus
@Titus Du hättest Hallo Welt sehen sollen! : D
Beta Decay
... und in normalen Jahren hat der Februar natürlich 31 Tage
edc65
@ edc65 Ich hätte wirklich wissen müssen, dass der Februar 29 Tage in Schaltjahren dauert: P
Beta Decay

Antworten:

12

Bash , 16 7 Bytes

-8 Byte dank Neil (und Fergusq) (keine Pipe zur Ausgabe erforderlich)
-1 Byte dank 12431234123412341234123 (Verwenden Sie die eingebaute Option mit Flag -I!)

date -I

Probieren Sie es online!

Jonathan Allan
quelle
2
Warum das echo $(...)?
Neil
Muss es nicht ausgegeben werden?
Jonathan Allan
6
dateAusgänge bereits, der Ausgang wird an stdout weitergeleitet. Sie müssen es nicht weiterleiten echo, wodurch es an stdout weitergeleitet wird. Probieren Sie es online!
Fergusq
Aber auch wenn du es wirklich nutzen willst echo, dann zumindest echo `date +%F`.
Manatwork
5
warum nicht benutzen -I?
12431234123412341234123
10

PHP, 17 Bytes

<?=date('Y-m-d');
Titus
quelle
1
Eigentlich YYYY-MM-DDThh:mm:ss+hh:mmist auch ein ISO 8601 Datum formatiert und diese 11 Bytes: <?=date(c);drucke das ganze Zeug aus. ;)
Titus
<?=strstr(date(c),T,1);um dem c-Format eine kleine Chance zu geben
Jörg Hülsermann
7

Bash, 15 Bytes

printf '%(%F)T'

Probelauf:

bash-4.4$ printf '%(%F)T'
2017-05-24

Probieren Sie es online!

Mann bei der Arbeit
quelle
Sogar besser, als ich auf SO fand, war mir nicht bewusst T.
Jonathan Allan
@ JonathanAllan, es wurde nur in Bash 4.2 hinzugefügt und bis Bash 4.3 war ein Argument zum Formatieren erforderlich.
Manatwork
5

JavaScript (ES6), 34 Byte

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

f=

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

console.log(f());

Johan Karlsson
quelle
Hmm, genauso lang wie_=>new Date().toJSON().slice(0,10)
Steve Bennett
4

SQLite, 13 Zeichen

select date()

Guter Junge, SQLite. Andere SQL-Dialekte benötigen normalerweise entweder current_dateoder date(now()).

Probelauf:

bash-4.4$ sqlite3 <<< 'select date()'
2017-05-24
Mann bei der Arbeit
quelle
1
MySQL hatcurdate
Titus
4

Mathematica, 20 Bytes

DateString@"ISODate"
J42161217
quelle
9
Manchmal
stelle
3

Excel, 24 Bytes

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

Excel macht immer noch eine 4-stellige Jahreszahl mit nur 3 y.

Scott Milner
quelle
2
Google Sheets wird das hinzufügen "). Excel wird nicht. Es wird das hinzufügen )am Ende , sondern erst , nachdem Sie aufgefordert werden, so wäre es zusätzliche Benutzereingabe erfordern und die Partitur wieder fahren. 24 Byte sind wahrscheinlich die kürzeste Excel-Antwort, es sei denn, wir lassen regionale Einstellungen zu, die standardmäßig das ISO-Datumsformat verwenden, und das steht zur Debatte .
Ingenieur Toast
@EngineerToast Danke. Ich werde das reparieren.
Scott Milner
2

R , 10 Bytes

Sys.Date()

Probieren Sie es online!

Giuseppe
quelle
1
Da es sich sys.datebereits um eine Funktion handelt, müssen Sie die nicht hinzufügen (), daher sind dies nur 8 Byte :)
JAD
@ JarkoDubbeldam nicht wahr, das () ist notwendig
D. Nelson
@ D.Nelson codegolf.meta.stackexchange.com/questions/2419/… Sys.Date ist eine Funktion, würde also als Lösung ausreichen. Es muss nicht explizit aufgerufen werden.
JAD
@ JarkoDubbeldam Das ist normalerweise der Fall, aber ich denke, da die Herausforderung darin besteht, das aktuelle Datum im ISO-8601-Format auszugeben, muss ich es tatsächlich ausgeben.
Giuseppe
1
Nun ja, und die letzte Zeile Sys.Dateerledigt die Ausgabe für Sie. Es ist ähnlich wie bei einer Lösung, function(x)die mit einem expliziten Aufruf beginnt . Es ist nur, wie eingebaute Ins bewertet werden.
JAD
2

Lua, 18 Zeichen

print(os.date"%F")

Probelauf:

bash-4.4$ lua -e 'print(os.date"%F")'
2017-05-24

Probieren Sie es online!

Mann bei der Arbeit
quelle
2

Alice , 9 Bytes

/oT\
@%;'

Probieren Sie es online!

Erläuterung

Ich überlasse den genauen Kontrollfluss dem Leser als Übung, aber der linearisierte Code, der im Ordinal-Modus ausgeführt wird, lautet:

%T'T%;o@

Und hier ist, was es tut:

%   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.

Eine Möglichkeit, wie Sie Golf spielen können, besteht darin %, das Programm im Kardinal-Modus mit einer Division durch Null zu beenden. Das einzige Layout, das ich mir ausgedacht habe, ist das Folgende:

\;T
\%o'

Aber hier wird das %Programm nicht beendet, da wir 111 ( 'o) direkt vorher drücken, sodass es nie eine Division durch Null gibt.

Im Prinzip ist es auch möglich, das wiederzuverwenden %, um es loszuwerden ;, da der Versuch, das Datum nach der Uhrzeit aufzuteilen, die Uhrzeit einfach verwirft.

Martin Ender
quelle
2

SmileBASIC 3, 29 Bytes

SB hat einen eingebauten Datumsstring ... aber er hat das falsche Format! Es werden Schrägstriche anstelle von Bindestrichen verwendet, was nicht gut ist. Da es sich um das selbstbewusste BASIC handelt, gibt es keine globale Ersatzfunktion. Ich muss es wohl selbst machen ...

D$=DATE$D$[4]="-
D$[7]="-
?D$
Schnecke_
quelle
2

VBA, 5 25 Bytes

?Date unvorhersehbar, abhängig von den Einstellungen für kurze Systemdaten

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

Ausgabe:

2017-05-25 
Maciej Lipinski
quelle
6
Diese Antwort ist außerordentlich flüchtig und kann auf den meisten Computern nicht richtig beantwortet werden, da dies ausschließlich davon abhängt, ob der Benutzer sein systemkurzes Datumsformat [unter Einstellungen -> Datum & Uhrzeit in Win10] auf "JJJJ-MM-TT . The default format for this is M / T" eingestellt hat / YYYY` und damit diese für die Ausgabe der DateFunktion ist 5/25/2017. Um dies zu korrigieren, müsste Ihre Antwort in einen FormatAnruf eingebunden werden.
Taylor Scott
2
@ TaylorScott zu diesem Zweck ?format(now,"yyyy-mm-dd") mit nowist kürzer alsdate
Greedo
1
@Greedo, das ist richtig. Dies ist meines Wissens der kürzeste Weg, um dieses Ziel mit VBA zu erreichen
Taylor Scott
1
@ TaylorScott danke für den Hinweis, ich war mir der Abhängigkeit von den Einstellungen des Systemdatums nicht bewusst. Dieses Datumsformat ist die Standardeinstellung auf meinem PC und in meinem Land im Allgemeinen, daher war ich hier etwas überfordert.
Maciej Lipinski
1

QBIC , 33 Bytes

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

Erläuterung:

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.
steenbergh
quelle
1

CJam , 22 15 Bytes

et3<{sY0e[}%'-*

Probieren Sie es online!

-7 Bytes dank Challenger5.

Erläuterung:

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
FrodCube
quelle
Sie können e[(Pad-Array) für 15 Bytes verwenden:et3<{sY0e[}%'-*
Esolanging Fruit
@ Challenger5 das ist cool. Danke
FrodCube
1

Python 2, 40 Bytes

from datetime import*;print date.today()
Wunderkricket
quelle
1

Oracle SQL, 46 Byte

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL
Khaled.K
quelle
1

Powershell, 26 17 Bytes

Date -f yyy-MM-dd

Danke an @ConnorLSW für die 9 Bytes.

Sivaprasath Vadivel
quelle
Hier kann man viel sparen. date -f 'yyyy-MM-dd'
colsw
Danke, Mann. Ich bin neu in Powershell. Also versuchte ich mein Glück hier
Sivaprasath Vadivel
@ Shivaprasath V - keine Sorge, in diesem Thread finden Sie einige hilfreiche Beiträge mit den grundlegenderen PS-Golf-Tricks, wenn Sie möchten.
Colsw
1

Ruby, 23 Bytes

Gibt die Ortszeit aus.

p Time.now.strftime'%F'
Schnecke_
quelle
1
p Time.now.to_s[0..9]
manatwork
1

MATLAB / Octave , 25 15 Bytes

datestr(now,29)

Probieren Sie es online!


Die eingebaute Funktion now gibt das aktuelle Systemdatum in einem seltsamen seriellen MATLAB-Format zurück.

datestrformatiert das seltsame serielle Format in eine Zeichenfolge eines angeforderten Formats - in diesem Fall 'YYYY-mm-dd'. Es stellt sich heraus, dass MATLAB eine Liste vordefinierter Formate für hat datestr. ISO8601 ist eine davon und wird durch die Nummer 29 dargestellt, was eine Einsparung von 10 Bytes ermöglicht.

Tom Carpenter
quelle
1

Python 2 ,  53  40 Bytes

-10 Byte dank Gábor Fekete (ISO-8601 ist das Standardformat für ein Datumsobjekt)

from datetime import*
print date.today()

Probieren Sie es online!

Wie?

datetime.date.today()Gibt ein datetime.dateObjekt zurück, das die lokalen Datumsinformationen enthält.

print Gibt eine Zeichenfolgendarstellung dieses Objekts aus. Dies ruft das Objekt auf __str__ . Funktion .

Aus den Dokumenten :

  • date.__str__(): Für a date d, str(d)entspricht d.isoformat().

  • date.isoformat(): Gibt eine stringDarstellung des Datums im ISO 8601- Format zurück ‘YYYY-MM-DD’. Zum Beispiel date(2002, 12, 4).isoformat() == '2002-12-04'.

Jonathan Allan
quelle
1
import datetime;print datetime.date.today()Dies ist nur 43 Bytes und verwendet datetime. Warum wird die noch kürzere Version gelöscht?
Gábor Fekete
@ GáborFekete Danke (ich denke du hättest wirklich posten sollen, es ist ausreichend anders). Die andere Antwort wurde wahrscheinlich gelöscht, weil die korrekt formatierte Zeichenfolge nicht gedruckt wurde. Ich habe eine Erklärung hinzugefügt, warum dies tatsächlich funktioniert (solange man das einschließt print). Rettete drei weitere Taten (das Böse) import*.
Jonathan Allan
Ich wollte, aber es gab eine andere Lösung, die noch kürzer war als meine, aber aus irgendeinem Grund gelöscht wurde.
Gábor Fekete
... die jetzt bearbeitet wurde, um die printgelöschte und dann nicht gelöschte Zeit einzuschließen.
Jonathan Allan
1

Kristall , 30 Bytes 24 Bytes 21 Bytes

-6 danke an Nick Clifford

-3 von der Antwort von snail_ in Ruby

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

Probieren Sie es online!

TitusLucretius
quelle
2
Ich bin mir ziemlich sicher, dass Sie verwenden können %F. Auch schön, Crystal auf PPCG zu sehen!
Nick Clifford
1
@ Nick Clifford Ich habe es auf tio gesehen und dachte, es hätte einen coolen Namen.
TitusLucretius
1

Rust, 84 Bytes

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

C #, 46 45 Bytes

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

Ein Byte dank @raznagul gespeichert.

TheLethalCoder
quelle
2
Wo lade ich herunter Sytem?
Erik der Outgolfer
6
@EriktheOutgolfer Es handelt sich um einen benutzerdefinierten Wrapper, den ich um den SystemNamespace erstellt habe, weil ich den gleichen Tippfehler gemacht habe ...
TheLethalCoder
4
Sie wissen, dass Dinge, die Sie lokal erstellen, in PPCG nicht zulässig sind, es sei denn, sie werden veröffentlicht, bevor die Frage gestellt wird. : P
Erik der Outgolfer
1
@EriktheOutgolfer Verdammt, beim nächsten Mal werde ich auch einen kürzeren Wrapper erstellen ...
TheLethalCoder
1
Da für das Jahr keine führenden Nullen erforderlich sind, "yyy-MM-dd"funktioniert auch die Formatzeichenfolge.
Raznagul
1

Java 8, 26 32 Bytes

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

Festes Format dank Kevin Cruijssen

jaxad0127
quelle
Wow, Java ist eigentlich kurz ... Ich hätte nie gedacht, dass ich den Tag sehen würde: D
Beta Decay
@BetaDecay Es ist kurz, entspricht aber derzeit nicht den Standardregeln für Codegolf. Es sollte eine Funktion anstelle eines Snippets sein, und die erforderlichen Importe sollten ebenfalls gezählt werden. So sollte es ()->java.time.LocalDate.now().toString()stattdessen sein. Dann wieder, können Sie Golf .toString()auf +"", so wird es ()->java.time.LocalDate.now()+""insgesamt ( 32 Byte ).
Kevin Cruijssen
1

C ++ 14, 143 Bytes 139 Bytes

#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 hat mich darauf hingewiesen, dass ich nicht alle Räume brauche

Teste mich!

Nobbele
quelle
Können Sie einige dieser Leerzeichen nicht entfernen?
Timtech
1

Schnell, 13 Bytes

print(Date())
Dimitrie-Toma Furdui
quelle