100 Tage Countdown

25

Es ist üblich, Countdowns 100 Tage vor einem Ereignis zu starten, wahrscheinlich aufgrund unseres Base-10-Systems. Beispiele hierfür finden Sie überall:

  • Noch 100 Tage bis zu deinem Geburtstag
  • 100 Tage bis zur Hochzeit
  • 100 Tage bis zur Wahl
  • 100 Tage bis zu unserem Abschluss
  • 100 Tage bis zu ihrem Fälligkeitsdatum
  • 100 Tage bis zur Fußballsaison
  • 100 Tage bis zum Fanatic Badge

Du bekommst das Bild. Es scheint, dass der 100. Tag vor einer Veranstaltung nur der zweite Platz nach der eigentlichen Veranstaltung ist. Für diese Herausforderung muss ich also wissen, wann das Datum in 100 Tagen sein wird, damit ich bestimmen kann, was ich auch mit dem Countdown beginnen soll.

Eingang

Keine Eingabe

Ausgabe

Das Datum 100 Tage nach dem aktuellen Datum basierend auf dem Gregorianischen Standardkalender (Stellen Sie sicher, dass Schaltjahre berücksichtigt werden). Der Ausgang ist flexibel, solange das Datumsformat ist die menschliche Lese-fähig (zB 2016-10-8, 10-8-16, [ 2016, 10, 8 ], 10/8/16 12:00:00 AM).

Gewinnen

Code Golf: kürzester Code in Bytes


Beispiele

100 Tage von heute (5. April 2017) ist Freitag, 14. Juli 2017.

Current                Future
-------                ------
01/01/2001 +100        04/11/2001
01/01/2004 +100        04/10/2004
01/01/1900 +100        04/11/1900
01/01/2000 +100        04/10/2000

07/04/2017 +100        10/12/2017
10/31/2017 +100        02/08/2018
12/25/2017 +100        04/04/2018

08/29/1941 +100        12/07/1941
06/03/2001 +100        09/11/2001
NichtlinearFruit
quelle
2
Kann ich die aktuelle Zeit zur Ausgabe hinzufügen?
Titus
1
@Titus nein, nur das zukünftige Datum
NonlinearFruit
1
Die meisten Antworten enthalten ein Datum und eine Uhrzeit. Ich denke, das sollte erlaubt sein.
GB
1
@DE Wenn Sie das zukünftige Datum ausgeben, ist das Format flexibel (kann einen Zeitstempel enthalten), sofern es für den Menschen lesbar ist. Die aktuelle Uhrzeit / das aktuelle Datum ist jedoch nicht akzeptabel.
NonlinearFruit
5
" Wegen unseres bas 10 Systems "? Nein, wenn wir binär zählen würden, würden wir wahrscheinlich von 100 herunterzählen - außer dass dies nur vier Tage dauern würde, anstatt hundert ...
Toby Speight

Antworten:

42

Excel, 10

=NOW()+100

Demonstration

Bildbeschreibung hier eingeben

Digitales Trauma
quelle
1
Funktioniert auch in Google Sheets.
Okx
11
Excel ist immer gut für Code-Golf, bei dem Datumsangaben analysiert werden.
Ingenieur Toast
2
Gibt es ein Sprachpaket für Excel, in dem die JETZT-Funktion mit nur zwei Buchstaben geschrieben ist? In diesem Fall könnten Sie 1 Byte sparen.
iFreilicht
13
Ja, Dutch hat 'nu ()'
Tominator
2
Obwohl, pro Datum nur Teil , =TODAY()+100=TEXT(NOW()+100,"MM/dd/yyyy")
müssten
20

Bash, 17 16 15 14 13 Bytes

date -d100day

Es hat sich herausgestellt, dass der dateBefehl ziemlich flexible Eingaben für relative Timings benötigt. Sie können auch Dinge tun 1 year, 1 week ago, yesterdayetc. Es ist ziemlich cool.

-1 Byte durch die Erkenntnis, dass sich Bash nicht um Grammatik kümmert.
-1 Byte, da der Abstand zwischen 100und nicht dayerforderlich ist.
-1 Byte, weil ich keine Anführungszeichen mehr benötige, weil ich kein Leerzeichen in der Zeichenfolge habe.
-1 Byte durch Entfernen des Leerzeichens danach -d(nur dank ASCII!)

HyperNeutrino
quelle
Neuer Lieblingsbefehl +1
NonlinearFruit
@NonlinearFruit Hah, ja, das ist wahrscheinlich einer meiner Lieblingsbefehle. Vielen Dank!
HyperNeutrino
Sie brauchen kein Leerzeichen mehr-d
ASCII
@ Nur ASCII Oh, okay. Vielen Dank!
HyperNeutrino
10

PowerShell, 10 Byte

(date)+1e2

Vielen Dank an ConnorLSW für den + 1e2-Trick.

Es scheint, dass Doppelte ( 1e2ein Doppelte) auch als Tage hinzugefügt werden.

Vorherige Version, 12 Bytes:

(date)+"100"

Anscheinend können Sie Daten in PowerShell Zeichenfolgen hinzufügen. Die Saite"100" wird in eine 100-Tage-TimeSpan .

Danko Durbić
quelle
2
Ok, frag mich nicht warum, aber auch wenn (date)+100es nicht (date)+1e2funktioniert ... Ich denke, es 1e2ist eine doubleWhile- 100Nummer, bis sie kompiliert ist, dh du kannst nicht anrufen, 100.GetType()aber du kannst 1e2.GetType()- das ist -2 und bringt uns zu ein Unentschieden mit Excel!
Colsw
@ConnorLSW Wenn es hilft oder zur Verwirrung beiträgt 100, werden 100 Ticks hinzugefügt, wobei der String "100"als Tage genommen wird. Beide sind gültige PS, aber nur einer macht das, was wir brauchen.
Matt
@Matt 1e6ist immer noch eine Nummer und wird als Tage hinzugefügt?
Colsw
Das ist dann interessant. Vielleicht ist mehr los unter der Haube, wo diese Zahl eine Schwelle überschreitet ... Ich weiß nicht
Matt
Ich denke, es hängt irgendwie mit dem alten DATE-Typ zusammen, bei dem es sich um eine 8-Byte-Gleitkommazahl handelt, bei der Tage als Ganzzahlinkremente dargestellt werden. Ich denke, das ist, was Excel verwendet.
Danko Durbić
7

Mediawiki, 19 Byte

{{#time:r|+100day}}

Sie können es mit der Sandbox von Wikipedia versuchen

tsh
quelle
Willkommen bei PPCG!
Martin Ender
6

PHP, 28 Bytes

<?=date(Y_m_d,time()+864e4);

Vom Menschen lesbare Version, 35 Bytes:

<?=date(Y_m_d,strtotime("100day"));

Fast lesbar, 34 Bytes:

<?=date(Y_m_d,strtotime(1e2.day));

-4 Bytes auch wenn der Zeitdruck akzeptiert wird: Ersetzen Sie Y_m_dmit roder c.

Es ist Nationalfeiertag in Frankreich in 100 Tagen.

Titus
quelle
Die Unterstriche ließen mich tun "Warum Unterstriche, ist es eine Konstante? Nein, eine Zeichenfolge OH WAIT 'SPACES' !!" Klug.
Martijn
@Martijn Einschalten E_NOTICEund Sie werden wissen: Y_m_dist eine undefinierte Konstante und PHP nimmt einen String an. Dies funktioniert mit jedem gültigen Wort (einschließlich aller Funktionsnamen) neben Schlüsselwort , vordefinierte Konstanten und Groß- und Kleinschreibung true, falseund null.
Titus
5

Ruby , 16 Bytes

p Time.now+864e4

Probieren Sie es online!

GB
quelle
Wollte das beantworten, nett. Aber ich bekomme unterschiedliche Ergebnisse für 864e4und 8640000und weiß nicht genau warum. Ich beschuldige TIO. BEARBEITEN: Wenn Sie verwenden p, führen die beiden Werte zu einem unterschiedlichen Ergebnis. Aber wenn Sie verwenden puts, sind sie gleich.
snail_
Ich verstehe nicht, ich bekomme mit beiden das gleiche Ergebnis. Können Sie ein Beispiel posten? Vielleicht kommt es auf das Gebietsschema an?
GB
p Time.now+864e4liegt p Time.now+8640000mit TIO rund 4 Tage zurück . Ich habe es mehrmals versucht. Wenn Sie jedoch verwenden puts, ist diese Unterscheidung nicht vorhanden. Ich weiß nicht wirklich, ob mein Gebietsschema von Bedeutung ist. Der Osten der USA sollte ziemlich normal sein. Ich schätze, ich werde versuchen, es auf meinem eigenen PC auszuführen, wenn ich zu Hause bin.
snail_
5

Javascript, 29 26 25 Bytes

3 Bytes gespart dank nur @ ASCII!

1 Byte dank @JohanKarlsson gespeichert

new Date(+new Date+864e7)

document.body.innerHTML=new Date(+new Date+864e7)

Thomas W
quelle
1
Sie können 864e7anstelle von864*10e6
ASCII
1
Sie können 1 Byte speichern, indem Sie +new Dateanstelle vonDate.now()
Johan Karlsson den
1
Dies ist ein Ausschnitt. Sie müssen enthaltenconsole.log
mbomb007
5

SQL (PostgreSQL), 19 Bytes

SELECT now()+'100d'
Richard
quelle
4

Vim, 27 Bytes

:r!date "+\%F" -d"+100 day"

versuche es online!

Bildbeschreibung hier eingeben

Bearbeiten: Nicht benötigtes Leerzeichen entfernt.

ersinakyuz
quelle
2
Wenn Sie Linux verwenden date, ist die auf dieser Seite date -d100daynicht sicher, ob es hilft
ASCII
Ich teste es :r!date +\%F -d100daydamit auch funktioniert (zumindest auf meinem pc (c)), ist aber das selbe wie HyperNeutrinoschon in bash verwendet.
12431234123412341234123
Sie können Bytes sparen, indem Sie nur vim eliminieren und dies in bash tun.
David Conrad
4

MATL , 9 Bytes

Z'100+1XO

Ausgabeformat ist 15-Jul-2017(was ich am besten lesbar finde). Wechseln Sie 1XOzu 2XO, um das in den Beispielen verwendete Format zu erhalten.07/15/17 .

Probieren Sie es online!

Erläuterung

Z'      % Push current date and time as a serial date number
100+    % Add 100
1XO     % Convert to string with format 'dd-mmm-yyyy'. Implicitly display
Luis Mendo
quelle
4

SQL (Microsoft), 35-31 Byte

SELECT DATEADD(D,100,GETDATE())
Tombas
quelle
Sie können danstelle DAYder Leerzeichen verwenden und diese entfernen DATEADD.
mbomb007
Sogar ich wusste nicht, dass du es brauchen könntest d. Ich benutze ddoder dayin der Praxis. Ich habe es einfach versucht und es hat funktioniert.
mbomb007
3

Java 8, 77 , 61 Bytes

()->System.out.print(java.time.LocalDate.now().plusDays(100))

Probieren Sie es online!

Keerthana Prabhakaran
quelle
Gibt es einen Grund, warum Sie das Kesselschild nicht einschließen? (zB 'class A {public static...') Für Java halte ich at für notwendig, um ein vollständiges Programm zu erstellen. Sie könnten ein Lambda machen ()->java.time.LocalDate.now().plusDays(100).
NonlinearFruit
Ich hatte das, bevor ich meine Antwort bearbeitete. Es war 94 Bytes zusammen mit der Kesselplatte. Ich bin neu beim Golfen mit Java. Daher bin ich mir nicht sicher, ob ich das mit einbeziehen musste!
Keerthana Prabhakaran
2
Einsendungen (sofern nicht anders angegeben) können entweder ein vollständiges Programm (das von einem Interpreter ohne Änderung ausgeführt werden kann) oder eine Funktion sein.
NonlinearFruit
3

C # 103 97 Bytes

Danke an raznagul für das Speichern von 6 Bytes!

using System;class P{static void Main(){Console.Write(DateTime.Now.AddDays(100).ToString("d"));}}

Vollständiges Programm, das das aktuelle Datum liest, 100 Tage hinzufügt und das Ergebnis im M/d/YYYYFormat anzeigt .

Sie können das Datumsformat ändern, indem Sie einige weitere Bytes hinzufügen:

using System;class P{static void Main(){Console.Write(DateTime.Now.AddDays(100).ToString("d-M-yyyy"));}}

Um Kesselzeichencode zu eliminieren - C # ist nicht gerade als sehr kompakt bekannt - kann eine anonyme Funktion verwendet werden:

C # Lambda, 49 43 Bytes

()=>DateTime.Now.AddDays(100).ToString("d")

Volles Programm:

using System;

class P
{
    static void Main()
    {
        Func<string> f = 
        ()=>DateTime.Now.AddDays(100).ToString("d");

        Console.WriteLine(f());
    }
}
adrianmp
quelle
Ich denke, Sie können für das vollständige Programm "System.DateTime.Now" schreiben, um "using System" zu vermeiden.
Taemyr
1
@Taemyr: Das wäre länger, als er es auch braucht Console.Write.
Raznagul
2
@adrianmp: Sie können 6 Bytes sparen, indem Sie .ToString("d")anstelle von .ToShortDateString().
Raznagul
3

Nudel , 8 Bytes

]5@LaƇ⁺ƈ

Versuch es:)


Wie es funktioniert

]5@LaƇ⁺ƈ
]5@La    # The string "]5@La" gets pushed onto the stack which in base 98 represents 8,640,000,000.
     Ƈ   # Pushes an integer that represents the current time where highest resolution is milliseconds.
      ⁺  # Add the time and the string which will be interpreted as 8,640,000,000ms.
       ƈ # Convert the integer to human readable time.
         # Implicitly output to the screen.

<div id="noodel" code="]5@LaƇ⁺ƈ" input="" cols="80" rows="2"/>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>

tkellehe
quelle
Das Zeichen Ƈ ist das Unicode-Zeichen U + 0187, das zu groß ist, um in einem einzelnen Byte angezeigt zu werden. Gleiches gilt für ƈ (U + 0188). Während dies also 8 Zeichen lang ist, beträgt die minimale
Bytelänge
1
@iFreilicht, Noodel verwendet eine eigene Codierung. Der Editor tut alles in UTF-16 , um besser visuell zu arbeiten, wird jedoch vor dem Parsen anhand der Noodel- Codepage codiert .
Tkellehe
3

Mathematica, 26 21 Bytes

-5 Bytes dank @KiranLinsuain!

Today+Quantity@"100d"

Wenn die Angabe der Zeit erlaubt ist, können wir 2 Bytes einsparen:

Now+Quantity@"100d"
numbermaniac
quelle
1
"Now + Quantity [" 100d "]" reduziert den Wert erheblich, funktioniert jedoch möglicherweise nicht immer bei allen Versionen.
kl
3

C 87 46 44 Bytes

2 Bytes gespart dank Albert Renshaw

f(){time_t t=time(0)+864e4;puts(ctime(&t));}

Ich erkannte, dass die Ausgabe flexibel genug ist, um Wochentag und Uhrzeit zu berücksichtigen, sodass weder die Verwendung localtimenoch die tmStruktur erforderlich sind .

Alte Antwort

f(){time_t t=time(0)+8640000;char b[9];strftime(b,9,"%d-%m-%y",localtime(&t));puts(b);}

Basierend auf der Antwort von Khaled.Ktm , addiert sich die Anzahl der Sekunden, die 100 Tagen entsprechen, direkt zum time_tWert , anstatt mit der Struktur herumzuspielen . Es wird auch nur das Datum ohne Uhrzeit und Wochentag gedruckt.

Wie es bei einem Golf-Programm passieren sollte, werden beim Kompilieren einige hässliche Warnungen generiert.

Probieren Sie es online!

Ungolfed:

f(){
    // Current time + 100 days
    time_t t=time(0)+8640000;
    // Buffer for printing formatted time
    char b[9];
    // Print the time in format dd-mm-yy to buffer
    strftime(b,9,"%d-%m-%y",localtime(&t));
    // print buffer
    puts(b);
}
Cássio Renan
quelle
2
Rasieren Sie 2 Bytes durch Ersetzen 8640000durch864e4
Albert Renshaw
2

IBM / Lotus Notes-Formel, 29 Byte

@Adjust(@Today;0;0;100;0;0;0)

Leider @Adjusterfordert das Nachziehen 0'sdas Fehlenhh:mm:ss .

Wenn wir auch die Uhrzeit anzeigen dürfen, ändern wir sie @Today , @Nowwürde durch auf 2 Byte für 27 Byte gespart.

ElPedro
quelle
2

JavaScript (ES6), 44 Byte

_=>new Date(Date.now()+864e7).toDateString()

25 Bytes, wenn die Rückgabe eines Datums mit der Uhrzeit akzeptabel ist:

_=>Date(Date.now()+864e7)
Neil
quelle
2

30 Bytes

Mysql!

select NOW()+INTERVAL 100 DAY;

SQLite

SELECT date('now','+100 day');
Keerthana Prabhakaran
quelle
2

F # (53 Bytes)

printf"%s"(DateTime.Now.AddDays(100.0).ToString("d"))
Rik
quelle
Hier werden nicht viele F # -Antworten angezeigt. Ein dickes Lob!
David Conrad
2

Schnelle 3, 39 Bytes

print(Date(timeIntervalSinceNow:864E4))
Matt
quelle
Ich würde behaupten, Sie brauchen das nicht import foundation;. Swift läuft nur unter iOS und wird dort automatisch importiert.
Albert Renshaw
Es gibt hier noch nicht zu viele schnelle Antworten. Sie sind sich also nicht sicher, wie der Konsens lautet. Aber ich denke, Sie haben einen guten Punkt, ich werde den Import entfernen :)
Matt
@ Albert Swift läuft auch unter Mac OS und Linux. Ich weiß aber nicht, was das bedeutet, ob der Import erforderlich ist.
David Conrad
2

C 120 113 Bytes

#include <time.h>
f(){time_t t=time(0);struct tm*tm=localtime(&t);tm->tm_mday+=100;t=mktime(tm);printf("%s",ctime(&t));}

Live-Demo

#include <stdio.h>
#include <time.h>

void PrintDatePlus100days()
{
    // obtain current time
    time_t t = time( 0 );

    // convert to datetime struct
    struct tm *tm = localtime( &t );

    // add 100 days
    tm->tm_mday += 100;

    // convert to time_t
    t = mktime( tm );

    // print time in readable format
    puts( ctime( &t ) );
}
Khaled.K
quelle
Wenn ich mich nicht irre, müssen Sie #include ...bei der Übermittlung von Funktionen nicht auf die Boilerplate achten. (Java antwortet importin diesem Fall zum Beispiel nicht )
Cássio Renan
@ CássioRenan In Java müssen Sie die Standardimporte wie nicht zählen java.lang.* nicht stdio.hwie stdlib.hin C zählen . Aber auch in Java müssen Sie entweder benutzerdefinierte Importe in Betracht ziehen oder den Pfad in den Klassennamen wiejava.util.Date : und das zählt in deiner Punktzahl.
Khaled.K
2
Warum sollte printf()das puts()nicht auch funktionieren?
12431234123412341234123
2

PowerShell, 23

(get-date).adddays(100)

Dies ist mein erster Versuch. Bitte geben Sie mir konstruktives Feedback. Vielen Dank!

Mahi Taher
quelle
2

R (REPL), 14 Bytes

Sys.Date()+100

Probieren Sie es auf Ideone .

Armipunk
quelle
1
Dies ist ein Ausschnitt. Ihr Code wird benötigt, um das Ergebnis entweder als Ergebnis einer Funktion oder als vollständiges Programm an STDOUT auszugeben.
mbomb007
Lassen Sie uns diese Diskussion im Chat fortsetzen .
mbomb007
@ mbomb007 REPL-Antworten sind zulässig , werden jedoch als separate Sprache betrachtet.
Dennis
@Dennis Es war vorher nicht als REPL gelistet.
mbomb007
1

Python, 63 Bytes

from datetime import*
print(datetime.now()+timedelta(days=100))

Sehr einfache Lösung wirklich. Da das datetime.now()Ergebnis dasselbe ist typewie das Ergebnis von timedelta, addiert es die beiden glücklich zusammen.


quelle
Es muss keine Funktion sein. Sie könnten das entfernen lambda:und es wäre immer noch ein volles Programm.
NonlinearFruit
@NonlinearFruit Ja, printmüsste aber hinzugefügt werden und das macht es die gleiche Anzahl von Bytes.
Wenn Sie Python 2 verwenden, können Sie Klammern entfernen print, um 1 Byte zu speichern
Dead Possum
das days=ist optional, das würde 5 + 1 Bytes sparen (python2 print's Klammern)
Felipe Nardi Batista
Auf 57 Bytes heruntergespielt:from datetime import*;print datetime.now()+timedelta(100)
Mr. Xcoder
1

JavaScript, 38 Bytes

d=new Date;d.setDate(d.getDate()+100);d

Ein bisschen kürzer als eine reine ASCII-Antwort .

document.write(eval("d=new Date;d.setDate(d.getDate()+100);d"))

Nurrl
quelle
1

Golang, 58 Bytes

import ."time"
func f(){Println(Now().AddDate(0, 0, 100))}

Volles Programm

package main

import . "time"
import . "fmt"

func main() {
    Println(Now().AddDate(0, 0, 100))
}

versuche es online!

ersinakyuz
quelle
1

Oracle, 34 Bytes

SELECT CURRENT_DATE+100 FROM DUAL;
AMB
quelle
1

Python 2 + Pandas 0.19.1, 56 51 Bytes

from pandas import*
print Timestamp('now','D')+100
Miradulo
quelle