我怎样才能生成Unix时间戳?
相关的问题是“date时间到Unix时间戳” ,但这个问题是更一般的。
我需要Unix时间戳来解决我最后一个问题。 我的兴趣是Python,Ruby和Haskell,但也欢迎其他的方法。
什么是生成Unix时间戳最简单的方法?
在Linux中你可以使用:
 date +%s 
哪里
-   +%s,自1970-01-01 00:00:00 UTC以来的秒数。 (GNU Coreutils 8.24date手册)
示例输出现在1454000043。
在Ruby中:
 >> Time.now.to_i => 1248933648 
在Python中添加以下行来获得时间戳:
 >>> import time >>> time.time() 1335906993.995389 >>> int(time.time()) 1335906993 
在Perl中:
 >> time => 1335552733 
unix的'date'命令令人惊讶的多才多艺。
date-j -f“%a%b%d%T%Z%Y”“`date`”“+%s”
 输出date的格式,格式为-f,然后打印出来(-j表示不要尝试设置date),格式为+%s,自纪元以来的秒数。 
首先,Unix“时代”或零时间是1970-01-01 00:00:00(意指1970年1月1日午夜在Zulu或GMT或UTC时区)。 Unix时间戳记是从那以后的秒数 – 没有考虑闰秒。
在Perl中生成当前时间相当简单:
 perl -e 'print time, "\n"' 
 生成对应于给定date/时间值的时间是相当不容易的。 从逻辑上讲,您使用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"' 
 curl icanhazepoch.com 
基本上它是unix时间戳服务(UTaaS)
 $ date +%s.%N 
哪里(GNU Coreutils 8.24date手册)
-   +%s,自1970-01-01 00:00:00 UTC以来的秒数
-   +%N,纳秒(000000000..999999999)自纪元
 示例输出现在是1454000043.704350695 。 我注意到date BSD手册没有包含关于flag +%s精确解释。 
为了完整,PHP:
 php -r 'echo time();' 
在BASH:
 clitime=$(php -r 'echo time();') echo $clitime 
这是我放在一起的一个小工具,因为我总是需要获取和转换unix时间戳: http : //www.unixstamp.com
它几乎支持任何格式,包括JavaScript毫秒时间戳。
在Haskell中…
要将其作为POSIXTimetypes返回:
 import Data.Time.Clock.POSIX getPOSIXTime 
作为整数:
 import Data.Time.Clock.POSIX round `fmap` getPOSIXTime 
 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; } } 
在Haskell
 import Data.Time.Clock.POSIX main :: IO () main = print . floor =<< getPOSIXTime 
在去
 import "time" t := time.Unix() 
在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); 
在Swift中
 NSDate().timeIntervalSince1970 // or Date().timeIntervalSince1970 
如果你需要从shell脚本(Bourne系列:sh,ksh,bash,zsh,…)中得到一个Unix时间戳,那么它应该可以在任何Unix机器上工作,而不像其他的build议(perl,haskell,ruby,python,GNU date ),它基于POSIX标准命令和function。
 PATH=`getconf PATH` awk 'BEGIN {srand();print srand()}' 
让我们试试JavaScript :
 var t = new Date().getTime(); 
…甚至更好,静态的方法:
 var t = Date.now()