相关问题是“ Datetime To Unix timestamp”,但是这个问题比较笼统。
我需要Unix时间戳来解决我的最后一个问题。我感兴趣的是Python,Ruby和Haskell,但欢迎其他方法。
生成Unix时间戳最简单的方法是什么?
相关问题是“ Datetime To Unix timestamp”,但是这个问题比较笼统。
我需要Unix时间戳来解决我的最后一个问题。我感兴趣的是Python,Ruby和Haskell,但欢迎其他方法。
生成Unix时间戳最简单的方法是什么?
Answers:
在Linux或MacOS中,您可以使用:
date +%s
哪里
+%s
,自1970-01-01 00:00:00 UTC以来的秒数。(GNU Coreutils 8.24日期手册)示例输出现在为1454000043。
date
通常在POSIX.2中定义。
/usr/bin/date +%s and
/ usr / xpg4 / bin / date +%s`都在工作。结合POSIX.2建议,我认为这也适用于所有Solaris。
date -v+60S +%s
增加1天:date -v+24H +%s
以此类推。。。
在Ruby中:
>> Time.now.to_i
=> 1248933648
Time.zone.now.to_i
。虽然它会给出同样的O / P为Time.now.to)_i
而Time.zone.now.to_i
为的Rails
方式。
./bin/rails runner "p Time.current.to_i"
是另一种解决方案。
在python中添加以下行以获得时间戳:
>>> import time
>>> time.time()
1335906993.995389
>>> int(time.time())
1335906993
curl icanhazepoch.com
基本上是unix时间戳即服务(UTaaS)
curl -L -H "Accept: application/json" unixtimesta.mp
会给你{"datetime":"Thu, 19 Jul 2018 12:01:21 GMT","timestamp":1532001681}
Unix的“ date”命令具有惊人的通用性。
date -j -f“%a%b%d%T%Z%Y”“`date`”“ +%s”
取得的输出date
,该输出将采用-f定义的格式,然后以+%s的形式将其打印出来(-j说不要尝试设置日期),以秒为单位。
date: invalid option -- 'j'
$ date +%s.%N
在哪里(GNU Coreutils 8.24日期手册)
+%s
,自1970-01-01 00:00:00 UTC以来的秒数+%N
,自纪元以来为纳秒(000000000..999999999) 现在输出示例1454000043.704350695
。我注意到BSD手册中date
未包含有关该标志的准确说明+%s
。
+$N
?在某些系统中,它是否包含在UNIX时间戳中?
%N
macOS 10.13.1(High Sierra)中没有记录有关日期的手册页,因此无法正常工作。我得到的样本输出是:1523342391.N
。
gdate
Homebrew apple.stackexchange.com/a/135749/181223
首先,Unix的“时代”或零时间是1970-01-01 00:00:00Z(表示1970年1月1日午夜在Zulu或GMT或UTC时区)。Unix时间戳是自该时间以来的秒数-不计leap秒。
在Perl中生成当前时间非常容易:
perl -e 'print time, "\n"'
生成与给定日期/时间值相对应的时间相当不容易。从逻辑上讲,您可以使用strptime()
POSIX中的功能。但是,Perl POSIX :: strptime模块(与POSIX模块分开)具有签名:
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) =
POSIX::strptime("string", "Format");
mktime
POSIX模块中的功能具有签名:
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"'
为了完整起见,PHP:
php -r 'echo time();'
在BASH中:
clitime=$(php -r 'echo time();')
echo $clitime
date
命令,因此我认为没有必要从那里调用php。
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);
在斯威夫特
NSDate().timeIntervalSince1970 // or Date().timeIntervalSince1970
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;
}
}
让我们尝试JavaScript:
var t = Math.floor((new Date().getTime()) / 1000);
...甚至更好的静态方法:
var t = Math.floor(Date.now() / 1000);
在这两种情况下,我都用1000
秒除以毫秒,而我Math.floor
只用来表示已过去的整秒(与舍入有关,后者可能舍入到还没有过去的一整秒)。
milliseconds
不会返回秒数,而unix时间戳是seconds
自1970年1月1日00:00 UTC以来已过去的数字。您可以使用JS,将其除以1000并四舍五入:Math.round(Date.now()/1000)
Math.floor
而不是,但我已经更新了答案Math.round
。干杯
如果要使用date命令打印utc日期时间,则需要在date命令中使用-u参数。
例
date -u
输出量
Fri Jun 14 09:00:42 UTC 2019
使用NodeJS,只需打开终端并输入:
node -e "console.log(new Date().getTime())"
或node -e "console.log(Date.now())"