我有一个文件.在Python中,我想花费它的创建时间,并将其转换为ISO时间(ISO 8601)字符串, 同时保留它在东部时区(ET)中创建的事实.
如何获取文件的ctime并将其转换为指示东部时区的ISO时间字符串(并在必要时考虑夏令时)?
我有一个数据集,其中所有日期都具有以下格式:
2012-10-09T19:00:55Z
Run Code Online (Sandbox Code Playgroud)
我希望能够使用像.weekday他们这样的方法.如何在Python中将它们转换为正确的格式?
我正在尝试在Python中生成RFC 3339 UTC时间戳.到目前为止,我已经能够做到以下几点:
>>> d = datetime.datetime.now()
>>> print d.isoformat('T')
2011-12-18T20:46:00.392227
Run Code Online (Sandbox Code Playgroud)
我的问题是设置UTC偏移量.
根据该文件,在类方法datetime.now([tz]),有一个可选的tz参数,其中tz must be an instance of a class tzinfo subclass,和datetime.tzinfo是an abstract base class for time zone information objects.
这就是我迷路的地方 - 为什么tzinfo是一个抽象类,我该如何实现呢?
(注意:在PHP中它很简单timestamp = date(DATE_RFC3339);,这就是为什么我无法理解为什么Python的方法如此错综复杂......)
从字符串获取日期时间的函数datetime.strptime(date_string, format)需要字符串格式作为第二个参数.有没有办法从字符串构建日期时间而不知道确切的格式,并让Python最好猜测它?
我正在尝试将ISO转换为datetime使用以下代码:
dt = datetime.datetime.strptime("2013-07-23T15:10:59.342107+01:00",
"%Y-%m-%dT%H:%M:%S.%f%z")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'z' is a bad directive in format '%Y-%m-%dT%H:%M:%S.%f%z'
Run Code Online (Sandbox Code Playgroud)
将格式上面的ISO字符串转换为对象的最佳方法是什么datetime?我使用的是Python 2.7.6版.
我想将这样的字符串转换"29-Apr-2013-15:59:02"
为更有用的字符串.
破折号可以很容易地用空格或其他字符替换.这种格式是理想的:"YYYYMMDD HH:mm:ss (20130429 15:59:02)".
编辑:
对不起,我没有在另一篇文章中特别看到答案.但同样,我是无知的,所以可能一直在寻找解决方案并且不知道它.我有这个工作,但我不认为它"漂亮".
#29-Apr-2013-15:59:02
import sys, datetime, time
#inDate = sys.argv[1]
inDate = 29-Apr-2013-15:59:02
def getMonth(month):
monthDict = {'Jan':'01','Feb':'02','Mar':'03','Apr':'04','May':'05','Jun':'06','Jul':'07','Aug':'08','Sep':'09','Oct':'10','Nov':'11','Dec':'12'}
for k, v in monthDict.iteritems():
if month == k:
return v
day = inDate[:2]
#print day
month = inDate[3:6]
#print month
year = inDate[7:11]
#print year
time = inDate[-8:]
#print time
newDate = year+getMonth(month)+day
newDateTime = newDate+" "+time
print newDate
print newDateTime
Run Code Online (Sandbox Code Playgroud)
有什么改进的想法?
我提供"2019-04-05T16:55:26Z"给 Python 3datetime.datetime.fromisoformat和 get Invalid isoformat string,尽管相同的字符串在没有 Z 的情况下也能工作。 ISO8601 允许 Z - https://en.wikipedia.org/wiki/ISO_8601
$ python3
Python 3.7.2 (default, Feb 12 2019, 08:15:36)
>>> datetime.fromisoformat("2019-04-05T16:55:26Z")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Invalid isoformat string: '2019-04-05T16:55:26Z'
>>> datetime.fromisoformat("2019-04-05T16:55:26")
datetime.datetime(2019, 4, 5, 16, 55, 26)
Run Code Online (Sandbox Code Playgroud) 为了感兴趣,我想将视频持续时间从YouTubes转换ISO 8601为秒.为了将来证明我的解决方案,我选择了一个非常长的视频来测试它.
API提供此期限 - "duration": "P1W2DT6H21M32S"
我尝试使用stackoverflow.com/questions/969285中的dateutil建议解析此持续时间.
import dateutil.parser
duration = = dateutil.parser.parse('P1W2DT6H21M32S')
Run Code Online (Sandbox Code Playgroud)
这引发了一个例外
TypeError: unsupported operand type(s) for +=: 'NoneType' and 'int'
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
假设我有一个像"2009-08-18 13:52:54-04"这样的时区.我可以使用这样的一行解析大部分内容:
datetime.strptime(time_string, "%Y-%m-%d %H:%M:%S")
Run Code Online (Sandbox Code Playgroud)
但是,我无法让时区工作.有一个%Z处理文本时区("EST","UTC"等),但我没有看到任何可以解析"-04"的东西.
python ×10
datetime ×7
iso8601 ×4
rfc3339 ×4
date ×1
iso ×1
python-3.7 ×1
python-3.x ×1
time ×1
youtube-api ×1