normal fecha convertir conversion calculadora unix unix-timestamp

fecha - ¿Cómo puedo generar marcas de tiempo Unix?



epoch (16)

Con NodeJS, solo abre una terminal y escribe:
node -e "console.log(new Date().getTime())" o node -e "console.log(Date.now())"

La pregunta relacionada es "Marca de tiempo de Datetime To Unix" , pero esta pregunta es más general.

Necesito las marcas de tiempo de Unix para resolver mi última pregunta. Mis intereses son Python, Ruby y Haskell, pero otros enfoques son bienvenidos.

¿Cuál es la forma más fácil de generar marcas de tiempo Unix?


El comando ''fecha'' de unix es sorprendentemente versátil.

date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

Toma el resultado de la date , que tendrá el formato definido por -f, y luego lo imprime (-j dice que no intentes establecer la fecha) en la forma +% s, segundos desde la época.


En Haskell ...

Para recuperarlo como un tipo POSIXTime:

import Data.Time.Clock.POSIX getPOSIXTime

Como un entero:

import Data.Time.Clock.POSIX round `fmap` getPOSIXTime


En Linux puedes usar:

date +%s

dónde

  • +%s , segundos desde 1970-01-01 00:00:00 UTC. (GNU Coreutils 8.24 Date manual)

Ejemplo de salida ahora 1454000043.


En Perl:

>> time => 1335552733


En primer lugar, la ''época'' o tiempo cero de Unix es 1970-01-01 00: 00: 00Z (lo que significa la medianoche del 1 de enero de 1970 en la zona horaria Zulu o GMT o UTC). Una marca de tiempo de Unix es la cantidad de segundos transcurridos desde ese momento, sin contar los segundos intercalares.

Generar la hora actual en Perl es bastante fácil:

perl -e ''print time, "/n"''

Generar el tiempo correspondiente a un valor de fecha / hora dado es bastante menos fácil. Lógicamente, utiliza la función strptime() de POSIX. Sin embargo, el módulo Perl POSIX :: strptime (que está separado del módulo POSIX) tiene la firma:

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) = POSIX::strptime("string", "Format");

La función mktime en el módulo POSIX tiene la firma:

mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = 0)

Entonces, si conoce el formato de sus datos, puede escribir una variante sobre:

perl -MPOSIX -MPOSIX::strptime -e / ''print mktime(POSIX::strptime("2009-07-30 04:30", "%Y-%m-%d %H:%M")), "/n"''


En python, agregue las siguientes líneas para obtener una marca de tiempo:

>>> import time >>> time.time() 1335906993.995389 >>> int(time.time()) 1335906993


Esta es una pequeña herramienta que armé ya que siempre necesito obtener y convertir marcas de tiempo de Unix: http://www.unixstamp.com

Admite casi cualquier formato, incluidas las marcas de tiempo de milisegundos de javascript.


Para completar, PHP:

php -r ''echo time();''

En BASH:

clitime=$(php -r ''echo time();'') echo $clitime


Probemos JavaScript :

var t = new Date().getTime();

... o incluso mejor, el enfoque estático:

var t = Date.now()


Si necesita una marca de tiempo de Unix desde un script de shell (familia Bourne: sh, ksh, bash, zsh, ...), esto debería funcionar en cualquier máquina Unix a diferencia de las otras sugerencias (perl, haskell, ruby, python, fecha GNU ), se basa en un comando y característica estándar POSIX.

PATH=`getconf PATH` awk ''BEGIN {srand();print srand()}''


en Haskell

import Data.Time.Clock.POSIX main :: IO () main = print . floor =<< getPOSIXTime

en Go

import "time" t := time.Unix()

en C

time(); // in time.h POSIX // for Windows time.h #define UNIXTIME(result) time_t localtime; time(&localtime); struct tm* utctime = gmtime(&localtime); result = mktime(utctime);

en Swift

NSDate().timeIntervalSince1970 // or Date().timeIntervalSince1970


en Ruby:

>> Time.now.to_i => 1248933648


curl icanhazepoch.com

Básicamente son marcas de tiempo unix como un servicio (UTaaS)


$ date +%s.%N

donde (GNU Coreutils 8.24 Date manual)

  • +%s , segundos desde 1970-01-01 00:00:00 UTC
  • +%N , nanosegundos (000000000..99999999) desde época

Ejemplo de salida ahora 1454000043.704350695 . Noté que el manual de BSD de la date no incluía una explicación precisa sobre la bandera +%s .


public static Int32 GetTimeStamp() { try { Int32 unixTimeStamp; DateTime currentTime = DateTime.Now; DateTime zuluTime = currentTime.ToUniversalTime(); DateTime unixEpoch = new DateTime(1970, 1, 1); unixTimeStamp = (Int32)(zuluTime.Subtract(unixEpoch)).TotalSeconds; return unixTimeStamp; } catch (Exception ex) { Debug.WriteLine(ex); return 0; } }