以Unix时间戳格式获取当前GMT时间的最简单方法是什么?

时间:2013-05-26 01:24:04

标签: python

Python提供了不同的包(datetimetimecalendar),可以看作here以便处理时间。通过使用以下内容获取当前GMT时间time.mktime(datetime.datetime.utcnow().timetuple())

,我犯了一个大错误

在Unix时间戳中获取当前GMT时间的简单方法是什么?

10 个答案:

答案 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

How to convert Python UTC datetime object to UNIX timestamp

答案 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