web-dev-qa-db-ja.com

Unixタイムスタンプを生成するにはどうすればよいですか?

関連する質問は "Datetime To Unix timestamp" ですが、この質問はより一般的です。

最後の質問 を解決するにはUnixタイムスタンプが必要です。 私の興味はPython、Ruby、Haskellですが、他のアプローチも歓迎します。

Unixタイムスタンプを生成する最も簡単な方法は何ですか?

LinuxまたはMacOSでは、次を使用できます。

date +%s

どこで

  • +%s、1970-01-01 00:00:00 UTCからの秒数。 (GNU Coreutils 8.24日付マニュアル)

現在の出力例は1454000043です。

384
Naresh

rubyの場合:

>> Time.now.to_i
=> 1248933648
110
bb.

Pythonで次の行を追加してタイムスタンプを取得します。

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

curl icanhazepoch.com

基本的には、サービスとしてのUNIXタイムスタンプ(UTaaS)です。

14
Hut8

Perlの場合:

>> time
=> 1335552733
12
davidchambers

UNIXの「日付」コマンドは驚くほど多用途です。

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

dateの出力を取得します。これは-fで定義された形式になり、その後、エポックからの秒数+%sの形式で出力します(-jは日付を設定しないことを意味します)。

8
Alan Horn

まず、Unixの「エポック」またはゼロタイムは1970-01-01 00:00:00Z(ZuluまたはGMTまたはUTCタイムゾーンの1970年1月1日の午前0時を意味します)です。 Unixタイムスタンプは、その時刻からの秒数であり、うるう秒を考慮していません。

Perlで現在の時刻を生成するのはかなり簡単です。

Perl -e 'print time, "\n"'

特定の日付/時刻値に対応する時刻を生成するのは、それほど簡単ではありません。論理的には、POSIXのstrptime()関数を使用します。ただし、Perl POSIX :: strptimeモジュール(POSIXモジュールとは別のもの)には次のシグネチャがあります。

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

POSIXモジュールの関数mktimeには次のシグネチャがあります。

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

したがって、データの形式がわかっている場合は、次のバリアントを作成できます。

Perl -MPOSIX -MPOSIX::strptime -e \
    'print mktime(POSIX::strptime("2009-07-30 04:30", "%Y-%m-%d %H:%M")), "\n"'
7
$ date +%s.%N

where(GNU Coreutils 8.24日付マニュアル)

  • +%s、1970-01-01 00:00:00 UTCからの秒数
  • +%N、エポック以降のナノ秒(000000000..999999999)

現在の出力例は1454000043.704350695です。 dateのBSDマニュアルには、フラグ+%sに関する正確な説明が含まれていないことに気付きました。

6
Lydia

完全を期すために、PHP:

php -r 'echo time();'

BASHの場合:

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

in Haskell

import Data.Time.Clock.POSIX

main :: IO ()
main = print . floor =<< getPOSIXTime

in Go

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

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

in Swift

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

試してみましょう JavaScript

var t = Math.floor((new Date().getTime()) / 1000);

...またはより良い、静的アプローチ:

var t = Math.floor(Date.now() / 1000);

どちらの場合も、1000で除算して秒からミリ秒に移動し、Math.floorを使用して、経過した秒全体のみを表します(丸めに対して、まだ経過していない秒に切り上げる場合があります)。

2
Madbreaks
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;
        }
    }
2

Haskellでは...

POSIXTime型として戻すには:

import Data.Time.Clock.POSIX
getPOSIXTime

整数として:

import Data.Time.Clock.POSIX
round `fmap` getPOSIXTime
2
Tom Morris

シェルスクリプト(Bourneファミリ:sh、ksh、bash、zsh、...)からUnixタイムスタンプが必要な場合、他の提案(Perl、haskell、Ruby、python、GNU date)、POSIX標準コマンドおよび機能に基づいています。

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

Bash 5には新しい変数があります:

echo $EPOCHSECONDS

または、より高い精度(マイクロ秒単位)が必要な場合:

echo $EPOCHREALTIME
0
Colera Su

Dateコマンドを使用してutc date timeを出力する場合、dateコマンドで-u引数を使用する必要があります。

date -u

出力

Fri Jun 14 09:00:42 UTC 2019
0
Viraj.Hadoop

NodeJSで、ターミナルを開いて次のように入力します。
node -e "console.log(new Date().getTime())"またはnode -e "console.log(Date.now())"

0
Dusan Jovanov