Python提供了不同的包(datetime
,time
,calendar
),可以看作here以便处理时间。通过使用以下内容获取当前GMT时间time.mktime(datetime.datetime.utcnow().timetuple())
在Unix时间戳中获取当前GMT时间的简单方法是什么?
答案 0 :(得分:170)
我会使用time.time()来获取自纪元以来秒数的时间戳。
import time
time.time()
输出:
1369550494.884832
对于大多数平台上的标准CPython实现,这将返回UTC值。
答案 1 :(得分:66)
import time
int(time.time())
输出:
1521462189
答案 2 :(得分:39)
这有帮助吗?
from datetime import datetime
import calendar
d = datetime.utcnow()
unixtime = calendar.timegm(d.utctimetuple())
print unixtime
答案 3 :(得分:10)
或者只是简单地使用日期时间标准模块
In [2]: from datetime import timezone, datetime
...: int(datetime.now(tz=timezone.utc).timestamp() * 1000)
...:
Out[2]: 1514901741720
您可以根据所需的分辨率截断或乘以。此示例输出millis。
如果你想要一个正确的 Unix 时间戳(以秒为单位),请删除* 1000
答案 4 :(得分:5)
Python 3秒,十进制分辨率为微秒:
from datetime import datetime
print(datetime.now().timestamp())
Python 3整数秒:
print(int(datetime.now().timestamp()))
datetime.utcnow().timestamp()
! datetime.utcnow()
是一个非时区感知对象。请参见参考:https://docs.python.org/3/library/datetime.html#aware-and-naive-objects
对于UTC上午1点之类的东西:
from datetime import timezone
print(datetime(1970,1,1,1,0,tzinfo=timezone.utc).timestamp())
或
print(datetime.fromisoformat('1970-01-01T01:00:00+00:00').timestamp())
如果删除tzinfo=timezone.utc
或+00:00
,则将获得取决于您当前本地时间的结果。例如:1970年1月1日凌晨1点,在您当前的时区中-这可能是合法的-例如,如果您想知道出生时刻的时间戳,则应使用出生时所在的时区。但是,{{ 1}}既不是本地时间的当前时刻,也不是UTC。例如,我现在在格林尼治标准时间7:00,datetime.utcnow().timestamp()
给出了未来 7小时的时间戳!
答案 5 :(得分:4)
至少在python3中有效:
>>> datetime.strftime(datetime.utcnow(), "%s")
'1587503279'
答案 6 :(得分:1)
我喜欢这种方法:
import datetime, time
dts = datetime.datetime.utcnow()
epochtime = round(time.mktime(dts.timetuple()) + dts.microsecond/1e6)
此处发布的其他方法要么不保证在所有平台上都提供UTC,要么只报告整秒。如果你想要全分辨率,这对于微秒有效。
答案 7 :(得分:1)
python2 和 python3
最好使用时间模块
import scrapy
class SmSpider(scrapy.Spider):
name = 'sm'
def start_requests(self):
urls = []
for i in range (0,10):
urls.append('http://www.example.com/sm.php?a=view&recid='+str(i))
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
companyname = response.selector.xpath('//table[3]/tbody/tr[1]/td[2]').get()
print(companyname)
1573708436
您还可以使用datetime模块,但是当您使用strftime('%s')时,strftime会将时间转换为本地时间!
python2
import time
int(time.time())
python3
from datetime import datetime
datetime.utcnow().strftime('%s')
答案 8 :(得分:0)
#First Example:
from datetime import datetime, timezone
timstamp1 =int(datetime.now(tz=timezone.utc).timestamp() * 1000)
print(timstamp1)
输出:1572878043380
#second example:
import time
timstamp2 =int(time.time())
print(timstamp2)
输出:1572878043
答案 9 :(得分:-1)
from datetime import datetime as dt
dt.utcnow().strftime("%s")
输出:
1544524990