Cuenta regresiva de 100 días


25

Es común comenzar la cuenta regresiva 100 días antes de un evento, probablemente debido a nuestro sistema de base 10. Se pueden encontrar ejemplos de esto en todas partes:

  • 100 días hasta tu cumpleaños
  • 100 días hasta la boda
  • 100 días hasta la elección
  • 100 días hasta nuestra graduación
  • 100 días hasta su fecha de vencimiento
  • 100 días hasta la temporada de fútbol
  • 100 días hasta que obtenga la insignia de Fanatic

Te dan la imagen. Parece que el centésimo día antes de un evento es el segundo lugar solo para el evento real. Entonces, para este desafío, necesito saber cuál será la fecha dentro de 100 días, para poder determinar qué debo comenzar a contar también.

Entrada

Sin entrada

Salida

La fecha 100 días a partir de la fecha actual basada en el calendario gregoriano estándar (asegúrese de tener en cuenta los años bisiestos). De salida es flexible, siempre que el formato de fecha es humano, capaz de lectura (por ejemplo 2016-10-8, 10-8-16, [ 2016, 10, 8 ], 10/8/16 12:00:00 AM).

Victorioso

Código golf: código más corto en bytes


Ejemplos

100 días a partir de hoy (5 de abril de 2017) es el viernes 14 de julio de 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

2
¿Puedo agregar la hora actual a la salida?
Titus

1
@Titus no, solo la fecha futura
NonlinearFruit

1
La mayoría de las respuestas incluyen una fecha y hora ahora, creo que esto debería permitirse.
GB

1
@GB Cuando imprime la fecha futura, el formato es flexible (podría incluir una marca de tiempo) siempre que sea legible por humanos. Sin embargo, la hora / fecha actual no es aceptable.
NonlinearFruit

55
"¿ Por nuestro sistema bas 10 "? No, si contáramos en binario, probablemente haríamos una cuenta regresiva de 100, excepto que tomaría solo cuatro días, en lugar de cien ...
Toby Speight

Respuestas:


42

Excel, 10

=NOW()+100

Demostración

ingrese la descripción de la imagen aquí


1
También funciona en Google Sheets.
Okx

11
Excel siempre es bueno para el código de golf que implica analizar fechas.
Engineer Toast el

2
¿Existe un paquete de idioma para Excel en el que la función AHORA se deletrea con solo dos letras? En ese caso, podría guardar 1 byte.
iFreilicht

13
Sí, el holandés tiene 'nu ()'
Tominator

2
Aunque, solo por parte de fecha , deberías usar =TODAY()+100o=TEXT(NOW()+100,"MM/dd/yyyy")
KyleMit

20

Bash, 17 16 15 14 13 bytes

date -d100day

Resulta que el date comando toma una entrada bastante flexible para tiempos relativos. También puede hacer cosas como 1 year, 1 week ago, yesterday, etc. Es una pasada.

-1 byte al darse cuenta de que a bash no le importa la gramática.
-1 byte porque el espacio entre 100y dayes innecesario.
-1 byte porque ya no necesito comillas porque no tengo espacio en la cadena.
-1 byte eliminando el espacio después -d(¡gracias solo ASCII!)


Nuevo comando favorito +1
NonlinearFruit

@NonlinearFruit Hah, sí, probablemente sea uno de mis comandos favoritos. ¡Gracias!
HyperNeutrino

No necesita el espacio después-d
solo ASCII el

@ Solo ASCII Oh, está bien. ¡Gracias!
HyperNeutrino

10

PowerShell, 10 bytes

(date)+1e2

Gracias a ConnorLSW por el truco + 1e2.

Parece que se duplica (1e2 es un doble) también se agregan como días.

Versión anterior, 12 bytes:

(date)+"100"

Aparentemente, puede agregar cadenas a las fechas en PowerShell. La cadena "100"se convierte en 100 días TimeSpan.


2
Ok, no me preguntes por qué, pero aunque (date)+100no funciona, (date)+1e2sí ... Supongo 1e2que en realidad es un doublemientras que 100es un número hasta que se compila, es decir, no puedes llamar 100.GetType()pero puedes 1e2.GetType(), eso es -2 y nos lleva a un sorteo con Excel!
colsw

@ConnorLSW Si ayuda o aumenta la confusión, 100se considera que agrega 100 ticks donde la cadena "100"se toma como días. Ambos son PS válidos pero solo uno hace lo que necesitamos.
Matt

¿@Matt 1e6sigue siendo un número y se agrega como días?
colsw

Eso es interesante entonces. Tal vez hay más cosas debajo del capó donde ese número alcanza más de un umbral ... No lo sé
Matt

Creo que de alguna manera está relacionado con el tipo DATE anterior, que es un número de coma flotante de 8 bytes con días que se representan como incrementos de números enteros. Supongo que eso es lo que Excel está usando.
Danko Durbić


6

PHP, 28 bytes

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

versión legible por humanos, 35 bytes:

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

casi legible, 34 bytes:

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

-4 bytes si también se acepta imprimir la hora: reemplace Y_m_dcon ro c.

Es fiesta nacional en Francia en 100 días.


Los guiones bajos me hicieron hacer "¿Por qué los guiones bajos, es una constante? ¡No, una cadena OH ESPERA 'ESPACIOS'!" Inteligente.
Martijn

@Martijn Enciéndelo E_NOTICEy lo sabrás: Y_m_des una constante indefinida y PHP asume una cadena. Esto funciona con cualquier palabra válida (incluidos todos los nombres de funciones) aparte de las palabras clave , las constantes predefinidas y las mayúsculas y minúsculas true, falsey null.
Tito

5

Ruby , 16 bytes

p Time.now+864e4

Pruébalo en línea!


Iba a responder esto, bien. Pero me da resultados diferentes para 864e4y 8640000y yo no sé muy bien por qué. Yo culpo a TIO. EDITAR: cuando usa p, los dos valores producen un resultado diferente. Pero cuando lo usas puts, son lo mismo.
snail_

No entiendo, obtengo el mismo resultado con ambos. Puede publicar un ejemplo? Tal vez depende de la localidad?
GB

p Time.now+864e4tiene alrededor de 4 días de retraso p Time.now+8640000en TIO. Lo intenté varias veces. Sin embargo, si usa puts, esta distinción no existe. Realmente no sé si mi ubicación es importante, el este de EE. UU. Debería ser bastante normal: PI supongo que intentaré ejecutarlo en mi propia PC cuando llegue a casa.
caracol_

5

Javascript, 29 26 25 bytes

¡Guardado 3 bytes gracias a @ ASCII-only!

Guardado 1 byte gracias a @JohanKarlsson

new Date(+new Date+864e7)

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


1
Puede usar en 864e7lugar de864*10e6
solo ASCII el

1
Puede guardar 1 byte usando en +new Datelugar deDate.now()
Johan Karlsson el

1
This is a snippet. You need to include console.log
mbomb007


4

Vim, 27 bytes

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

try it online!

enter image description here

Edit: Removed unnecessary space char.


2
Si está utilizando Linux date, el de esta página es date -d100day, aunque no estoy seguro si ayudará
Solo ASCII el

Lo pruebo con :r!date +\%F -d100dayesto también funciona (al menos en mi pc (C)), pero es lo mismo que HyperNeutrinoya uso en bash.
12431234123412341234123

Puedes guardar bytes simplemente eliminando vim y haciéndolo en bash.
David Conrad

4

MATL , 9 bytes

Z'100+1XO

Output format is 15-Jul-2017 (which I find most readable). Change 1XO to 2XO to get the format used in the examples, 07/15/17.

Try it online!

Explanation

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

4

SQL (Microsoft), 35 31 bytes

SELECT DATEADD(D,100,GETDATE())

You can use d instead of DAY and remove the spaces inside DATEADD.
mbomb007

Even I didn't know you could use d. I use dd or day in practice. I just tried it and it worked.
mbomb007

3

Java 8, 77, 61 bytes

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

Try it online!


¿Hay alguna razón por la que no incluye el repetitivo? (es decir, 'clase A {public static...') Para Java, creo que es necesario para un programa completo. Podrías hacer una lambda ()->java.time.LocalDate.now().plusDays(100).
NonlinearFruit

Tenía eso antes de editar mi respuesta. Tenía 94 bytes junto con el repetitivo. Soy nuevo en el golf con Java. Por lo tanto, no estoy seguro de si tenía que incluir eso.
Keerthana Prabhakaran

2
Los envíos (a menos que se especifique lo contrario) pueden ser un programa completo (ejecutable por algún intérprete sin modificación) o una función.
NonlinearFruit

3

C #, 103 97 bytes

¡Gracias a raznagul por guardar 6 bytes!

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

Programa completo que lee la fecha actual, agrega 100 días y muestra el resultado en M/d/YYYY format.

Puede cambiar el formato de fecha agregando algunos bytes más:

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

Para eliminar el código repetitivo (no se sabe exactamente que C # sea muy compacto), se puede utilizar una función anónima:

C # lambda, 49 43 bytes

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

Programa completo:

using System;

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

        Console.WriteLine(f());
    }
}

Para el programa completo, creo que puede escribir System.DateTime.Now ... para evitar "usar System;"
Taemyr

1
@Taemyr: Eso sería más largo, ya que él también lo necesita Console.Write.
raznagul

2
@adrianmp: puede guardar guardar 6 bytes utilizando en .ToString("d")lugar de .ToShortDateString().
raznagul

3

Noodel , 8 bytes

]5@LaƇ⁺ƈ

Intentalo:)


Cómo funciona

]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>


El carácter Ƈ es el carácter unicode U + 0187, que es demasiado grande para mostrarse en un solo byte. Lo mismo ocurre con ƈ (U + 0188). Entonces, si bien tiene 8 caracteres, la longitud mínima de bytes es 10.
iFreilicht

1
@iFreilicht, Noodel usa su propia codificación. El editor hace todo en UTF-16 para trabajar mejor visualmente, pero se codifica en función de la página de códigos de Noodel antes de analizar.
tkellehe

3

Mathematica, 26 21 bytes

-5 bytes gracias a @KiranLinsuain!

Today+Quantity@"100d"

Si se permite incluir el tiempo, entonces podemos guardar 2 bytes:

Now+Quantity@"100d"

1
"Ahora + Cantidad [" 100d "]" lo reduce bastante, pero puede que no siempre funcione en todas las versiones.
kl

3

C, 87 46 44 bytes

ahorró 2 bytes gracias a Albert Renshaw

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

Me di cuenta de que la salida es lo suficientemente flexible como para permitir el día de la semana y la hora, por lo que no hay necesidad de usar localtimeo la tmestructura en absoluto.

Vieja respuesta

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

Basado en la respuesta de Khaled.K , pero en lugar de meterse con la tmestructura, agrega el número de segundos equivalente a 100 días directamente altime_t valor. También imprime solo la fecha, sin hora ni día de la semana.

Como debería suceder en un programa de golf, se generan algunas advertencias feas en la compilación.

Pruébalo en línea!

Sin golf:

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

2
Afeitar 2 bytes reemplazando 8640000con864e4
Albert Renshaw


2

Fórmula IBM / Lotus Notes, 29 bytes

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

Lamentablemente @Adjustrequiere el seguimiento 0'sde los desaparecidos hh:mm:ss.

Si se nos permitiera mostrar la hora también, cambiar @Todaya @Nowahorraría 2 bytes para 27.


2

JavaScript (ES6), 44 bytes

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

25 bytes si es aceptable devolver una fecha con la hora:

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


2

F # (53 bytes)

printf"%s"(DateTime.Now.AddDays(100.0).ToString("d"))

No veo muchas respuestas de F # aquí. ¡Prestigio!
David Conrad

2

Swift 3, 39 bytes

print(Date(timeIntervalSinceNow:864E4))

Yo diría que no necesitas el import foundation;. Swift se ejecuta solo en iOS y eso se importa automáticamente allí.
Albert Renshaw

Todavía no hay demasiadas respuestas Swift aquí, así que no estoy seguro de cuál es el consenso. Pero creo que tienes un buen punto, eliminaré la importación :)
Matt

@Albert Swift también se ejecuta en Mac OS y Linux. Sin embargo, no sé qué significa eso si se requiere la importación.
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));}

Demo en vivo

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

Si no me equivoco, no es necesario tener en cuenta las #include ...repeticiones al enviar funciones. (Las respuestas de Java, por ejemplo, no son necesarias importen ese caso)
Cássio Renan

@ CássioRenan en Java no necesita contar las importaciones predeterminadas como java.lang.*, como no contamos stdio.hy stdlib.hen C. Pero incluso en Java, debe considerar importaciones personalizadas o poner la ruta en el nombre de la clase como java.util.Date, y eso cuenta en tu puntaje.
Khaled.K

2
¿Por qué utilizar printf()sería puts()también no trabajar?
12431234123412341234123

2

PowerShell, 23

(get-date).adddays(100)

Este es mi primer intento, así que por favor dame comentarios constructivos. ¡Gracias!



1

Python, 63 bytes

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

Solución muy simple realmente. Debido a que el datetime.now()resultado es el mismo typeque el resultado timedelta, felizmente agrega los dos juntos.


No tiene que ser una función. Puede eliminar el lambda:y aún sería un programa completo.
NonlinearFruit

@NonlinearFruit Sí, pero printtendría que agregarse y eso hace que tenga el mismo número de bytes.

Si usa Python 2, puede quitar los corchetes printpara guardar 1 byte
Dead Possum

el days=es opcional, que podría salvar 5 + 1 bytes (python2 printsoportes 's)
Felipe Nardi Batista

Golfed hasta 57 bytes:from datetime import*;print datetime.now()+timedelta(100)
Sr. Xcoder

1

JavaScript, 38 bytes

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

Un poco más corto que la respuesta solo ASCII .

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


1

Golang, 58 bytes

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

Programa completo

package main

import . "time"
import . "fmt"

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

Pruébalo en línea!


1

Oracle, 34 bytes

SELECT CURRENT_DATE+100 FROM DUAL;

1

Python 2 + Pandas 0.19.1, 56 51 bytes

from pandas import*
print Timestamp('now','D')+100
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.