73 votos

Tiempo en milisegundos desde la época en el terminal

¿Cómo puedo obtener el tiempo desde la época, en milisegundos, en el terminal de OSX?

El equivalente en Linux/Ubuntu es date +%s.%N :

Linux $ date +%s.%N
1403377762.035521859

Que no funciona en mi terminal de OSX:

OSX $ date +%s.%N
1403377800.N

80voto

CousinCocaine Puntos 3615

El date en OS X es diferente de coreutils de GNU date programa. Puedes instalar coreutils (incluyendo gnu-date), entonces tendrás una versión de date que soporta milisegundos.

Como la instalación desde el origen puede ser una molestia para los usuarios nativos de OS X te aconsejo que utilices Homebrew .

Para instalar estas herramientas utilizando Homebrew ejecuta este oneliner en tu terminal:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Homebrew ya está instalado (es conveniente seguir las sugerencias del instalador después de la instalación). Ahora instalaremos coreutils usando brew .

brew install coreutils

Como dice la instalación, todos los comandos se han instalado con el prefijo 'g' (por ejemplo, gdate, gcat, gln, etc.). Si realmente necesita utilizar estos comandos con sus nombres normales, puede añadir un directorio "gnubin" a su PATH ( ~/.bash_profile ) como:

PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

Ahora puede ejecutar

gdate +%s.%N

y esto mostrará el tiempo desde la época en milisegundos.

28voto

ernix Puntos 191

Perl es omnipresente.

$ perl -MTime::HiRes=time -e 'printf "%.9f\n", time'
1557390839.244920969

25voto

siva Puntos 23

En OS X, basta con ejecutar date +%s ya que OS X no admite más precisión que ésta en date y cualquier exceso de precisión no soportado por la representación interna se trunca hacia menos infinito.

Si desea una salida en milisegundos, puede utilizar el siguiente comando, aunque la salida sólo se corrige añadiendo ceros en lugar de añadir precisión debido a la razón mencionada anteriormente. El siguiente comando produce milisegundos correctos en sistemas que soportan la precisión necesaria.

echo $(($(date +'%s * 1000 + %-N / 1000000')))

Fuente del comando anterior: Unix.SE - Cómo obtener los milisegundos desde la época de Unix

Si sólo quieres un comando que añada el número correcto de ceros en OS X, puedes usar

date +%s000

7voto

chris13524 Puntos 128

esta solución funciona en MacOS.

si considera usar un bash script y tiene Python disponible, podría usar este código:

#!/bin/bash

python -c 'from time import time; print int(round(time() * 1000))'

O escribir un python script directamente:

#!/usr/bin/python

from time import time
print int(round(time() * 1000))

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X