我需要做什么
我有一个时区不知道的日期时间对象,我需要添加一个时区,以便能够将其与其他时区感知日期时间对象进行比较.我不想将我的整个应用程序转换为时区,而不是因为这个遗留案例.
我试过的
首先,要证明问题:
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> import pytz
>>> unaware = datetime.datetime(2011,8,15,8,15,12,0)
>>> unaware
datetime.datetime(2011, 8, 15, 8, 15, 12)
>>> aware = datetime.datetime(2011,8,15,8,15,12,0,pytz.UTC)
>>> aware
datetime.datetime(2011, 8, 15, 8, 15, 12, tzinfo=<UTC>)
>>> aware == unaware
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't compare offset-naive and offset-aware …Run Code Online (Sandbox Code Playgroud) 我有一个Python datetime对象,我想转换为unix时间,或自1970年代以来的秒/毫秒.
我该怎么做呢?
我正在处理Python中的日期,我需要将它们转换为UTC时间戳,以便在Javascript中使用.以下代码不起作用:
>>> d = datetime.date(2011,01,01)
>>> datetime.datetime.utcfromtimestamp(time.mktime(d.timetuple()))
datetime.datetime(2010, 12, 31, 23, 0)
Run Code Online (Sandbox Code Playgroud)
将日期对象首先转换为datetime也无济于事.我试过这个链接的例子,但是:
from pytz import utc, timezone
from datetime import datetime
from time import mktime
input_date = datetime(year=2011, month=1, day=15)
Run Code Online (Sandbox Code Playgroud)
现在要么:
mktime(utc.localize(input_date).utctimetuple())
Run Code Online (Sandbox Code Playgroud)
要么
mktime(timezone('US/Eastern').localize(input_date).utctimetuple())
Run Code Online (Sandbox Code Playgroud)
确实有效.
所以一般的问题:如何根据UTC获得自纪元以来转换为秒的日期?
time从epoch开始,模块可以使用秒进行初始化:
>>> import time
>>> t1=time.gmtime(1284286794)
>>> t1
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=12, tm_hour=10, tm_min=19,
tm_sec=54, tm_wday=6, tm_yday=255, tm_isdst=0)
Run Code Online (Sandbox Code Playgroud)
有一种优雅的方式以datetime.datetime相同的方式初始化对象吗?
我似乎很难理解这一点.
calendar.timegm()和之间有什么区别time.mktime()?
假设我datetime.datetime没有连接tzinfo,两个不应该给出相同的输出吗?难道他们都没有给出纪元和作为参数传递的日期之间的秒数?而且由于传递的日期没有tzinfo,那个秒数不一样吗?
>>> import calendar
>>> import time
>>> import datetime
>>> d = datetime.datetime(2010, 10, 10)
>>> calendar.timegm(d.timetuple())
1286668800
>>> time.mktime(d.timetuple())
1286640000.0
>>>
Run Code Online (Sandbox Code Playgroud) 我正试图绕过日期时间模块.我知道现在的时间作为一个时代和事件最后发生的时间(作为一个纪元时间).我需要做的是弄清楚该事件是否发生在昨天的午夜和午夜之间.
t = time.time() # is now
t2 = 1234567890 # some arbitrary time from my log
Run Code Online (Sandbox Code Playgroud)
24小时前是t - 86400,但我怎样才能将它上下调整到午夜.我很难找到一种方法来获取时间戳进出日期时间,或者操纵日期时间来设置时间.
我需要使用Boto3从S3获取项目列表,但不是返回默认排序顺序(降序),而是希望它通过反向顺序返回它.
我知道你可以通过awscli来做到这一点:
aws s3api list-objects --bucket mybucketfoo --query "reverse(sort_by(Contents,&LastModified))"
Run Code Online (Sandbox Code Playgroud)
并通过UI控制台实现(不确定这是完成客户端还是服务器端)
我似乎无法在Boto3中看到如何做到这一点.
我目前正在获取所有文件,然后排序......但这似乎有点过头了,特别是如果我只关心10个左右的最新文件.
过滤系统似乎只接受s3的前缀,没有别的.
我想将字符串日期格式转换为微秒的时间戳我尝试以下但不给出预期的结果:
"""input string date -> 2014-08-01 04:41:52,117
expected result -> 1410748201.117"""
import time
import datetime
myDate = "2014-08-01 04:41:52,117"
timestamp = time.mktime(datetime.datetime.strptime(myDate, "%Y-%m-%d %H:%M:%S,%f").timetuple())
print timestamp
> 1410748201.0
Run Code Online (Sandbox Code Playgroud)
毫秒在哪里?