458 Stimmen

Befehl zum Abrufen der Zeit in Millisekunden

Gibt es in Linux einen Shell-Befehl, um die Zeit in Millisekunden zu erhalten?

3voto

kvantour Punkte 22682

Wenn Sie GNU AWK seit Version 4.1 verwenden, können Sie die Zeitbibliothek laden und Folgendes tun:

$ awk '@load "time"; BEGIN{printf "%.6f", gettimeofday()}'

Dies druckt die aktuelle Zeit in Sekunden seit 1970-01-01T00:00:00 mit Subsekunden-Genauigkeit aus.

the_time = gettimeofday() Gibt die vergangene Zeit seit dem 01.01.1970 UTC in Sekunden als Gleitkommazahl zurück. Wenn die Zeit auf dieser Plattform nicht verfügbar ist, wird -1 zurückgegeben und ERRNO gesetzt. Die zurückgegebene Zeit sollte eine Subsekundenpräzision haben, aber die tatsächliche Genauigkeit kann je nach Plattform variieren. Wenn der Standard-C-Systemaufruf gettimeofday() auf dieser Plattform verfügbar ist, gibt er einfach den Wert zurück. Andernfalls versucht er auf MS-Windows, GetSystemTimeAsFileTime() zu verwenden.

Quelle: <a href="https://www.gnu.org/software/gawk/manual/gawk.html#Extension-Sample-Time" rel="nofollow noreferrer">GNU awk Handbuch</a>

Auf Linux-Systemen liefert die Standard-C-Funktion getimeofday() die Zeit mit Mikrosekunden-Genauigkeit zurück.

2voto

Lorinczy Zsigmond Punkte 1632

Perl kann dafür verwendet werden, sogar auf exotischen Plattformen wie AIX. Beispiel:

#!/usr/bin/perl -w

use strict;
use Time::HiRes qw(gettimeofday);

my ($t_sec, $usec) = gettimeofday ();
my $msec= int ($usec/1000);

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
    localtime ($t_sec);

printf "%04d-%02d-%02d %02d:%02d:%02d %03d\n",
    1900+$year, 1+$mon, $mday, $hour, $min, $sec, $msec;

2voto

Lyncean Patel Punkte 2373

Ich möchte Wert aus Bash generieren und diesen Wert im Java-Code verwenden, um ihn zurück in ein Datum (java.util) umzuwandeln.

Der folgende Befehl funktioniert für mich, um den Wert in der Bash-Datei zu generieren:

datum +%s000

0voto

maoyang Punkte 979

Ein Python-Skript wie dieses:

import time
cur_time = int(time.time()*1000)

0voto

Xopi García Punkte 191

Um Dezimalsekunden auszugeben:

start=$(($(date +%s%N)/1000000)) \
    && sleep 2 \
    && end=$(($(date +%s%N)/1000000)) \
    && runtime=$((end - start))

divisor=1000 \
    && foo=$(printf "%s.%s" $(( runtime / divisor )) $(( runtime % divisor ))) \
    && printf "Laufzeit %s\n" $foo # in bash integer cannot cast to float

Ausgabe: Laufzeit 2.3

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X