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.


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!


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

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




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

1
MySQL hatcurdate
Titus



3

Excel, 24 Bytes

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

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


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!


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

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.


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$

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 

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.

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

Sie können e[(Pad-Array) für 15 Bytes verwenden:et3<{sY0e[}%'-*
Esolanging Fruit

@ Challenger5 das ist cool. Danke
FrodCube



1

Oracle SQL, 46 Byte

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



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.


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


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

Rust, 84 Bytes

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

1

C #, 46 45 Bytes

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

Ein Byte dank @raznagul gespeichert.


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


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!


Können Sie einige dieser Leerzeichen nicht entfernen?
Timtech

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.