我有一个字符串列表,每个字符串代表一个带或不带毫秒的时间,例如
l = ['03:18:45.2345', '03:19:23']
我想将每个字符串转换为日期时间对象。现在我正在运行:
>>> l = ['03:18:45.2345', '03:19:23']
>>> for item in l:
... print datetime.datetime.strptime(item, "%H:%M:%S.%f")
...
1900-01-01 03:18:45.234500
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '03:19:23' does not match format '%H:%M:%S.%f'
Run Code Online (Sandbox Code Playgroud)
因此,问题是:如何迭代转换对象中的每个元素的列表datetime?
第一个想法是try..except..:
try:
print datetime.datetime.strptime(item, "%H:%M:%S.%f")
except:
print datetime.datetime.strptime(item, "%H:%M:%S")
Run Code Online (Sandbox Code Playgroud)
有什么办法可以做到这一点而不抓住ValueError?
我有一个字符串列表。
date_str = ["2012-11-04 1:05:21", "2013-11-03 1:05:21", "2014-11-02 1:07:31"]
Run Code Online (Sandbox Code Playgroud)
我想将它们作为日期时间对象来读取。对于一根弦,我做
datetime.strptime(date_str[1], "%Y-%m-%d %H:%M:%S")
Run Code Online (Sandbox Code Playgroud)
但我不知道如何创建日期时间对象列表。如果我使用
datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
TypeError: must be string, not list
Run Code Online (Sandbox Code Playgroud)
我尝试使用循环:
x = datetime.strptime(date_str[0], "%Y-%m-%d %H:%M:%S")
for i in range(1,len(date_str)):
x.append(datetime.strptime(date_str[i], "%Y-%m-%d %H:%M:%S"))
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误
AttributeError: 'datetime.datetime' object has no attribute 'append'
Run Code Online (Sandbox Code Playgroud)
有没有办法创建日期时间对象列表?
我无法找出strptime以下日期格式的正确第二个参数
a = datetime.strptime('2017-03-09 14:00:00.000000+0000', '%y-%m-%d %H:%M:%S.%f+%z')
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
ValueError: time data '2017-03-09 14:00:00.000000+0000' does not match format '%y-%m-%d %H:%M:%S.%f+%z'
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?
有谁知道如何使用Pythons strptime方法解析标题中描述的格式?
我有类似的东西:
import datetime
date = datetime.datetime.strptime(entry.published.text, '%Y-%m-%dT%H:%M:%S.Z')
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚这是什么样的时间格式.顺便说一句,我是Python语言的新手(我已经习惯了C#).
UPDATE
这是我根据以下建议(答案)更改代码的方式:
from dateutil.parser import *
from datetime import *
date = parse(entry.published.text)
Run Code Online (Sandbox Code Playgroud) 我有一个大型数据集,其中包含以下格式的各种日期信息:
我熟悉python的时间模块,strptime()方法和strftime()方法.但是,如果有一个python模块可用于转换这些不寻常的日期格式,我不确定上面的这些日期格式是什么.
知道如何在不编写自己的计算器的情况下从这些不寻常的日期格式中获取%Y%M%D格式吗?
谢谢.
我有一个带标题的文本文件数据集
YEAR MONTH DAY value
Run Code Online (Sandbox Code Playgroud)
从2010年6月6日至2012年7月14日每小时运行一次.我使用以下命令打开并绘制数据:
data=read.table('example.txt',header=T)
time = strptime(paste(data$DAY,data$MONTH,data$YEAR,sep="-"), format="%d-%m-%Y")
plot(time,data$value)
Run Code Online (Sandbox Code Playgroud)
但是,绘制数据时,x轴仅显示2011年和2012年.
.如何保留2011年和2012年的标签,还要添加一些特定的月份,例如,如果我想要3月,6月和9月?
我已在此链接上提供数据
我相信我错过了一些微不足道的事情.在阅读了所有关于strptime ValueError我的问题后,我觉得格式似乎正确,以下是我得到的以下错误
Traceback (most recent call last):
File "loadScrip.py", line 18, in <module>
nextDate = datetime.datetime.strptime(date, "%Y/%m/%d")
File "/usr/lib64/python2.6/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '20l2/08/25' does not match format '%Y/%m/%d'
Run Code Online (Sandbox Code Playgroud)
我在Linux x86_64下使用Python 2.6.6.任何帮助都感激不尽.
在我的Rails应用程序(Rails 2.3.14和Ruby 1.8.7)中,我试图将日期时间字符串转换为不同的格式,以便在我的MySQL数据库上执行搜索但是我收到 invalid date错误,我似乎无法弄清楚为什么,我已经阅读了一些类似的问题,但我似乎仍无法解决这个问题.
# check if filter contains a time stamp
if params[:sSearch].include?('/') and params[:sSearch].include?(':')
datetime = DateTime.strptime(params[:sSearch], "%Y-%m-%d %H:%M")
params[:sSearch] = datetime
end
Run Code Online (Sandbox Code Playgroud)
示例场景
04/11/13 16:14
Run Code Online (Sandbox Code Playgroud)
应转换为
2013-11-04 16:14
Run Code Online (Sandbox Code Playgroud)
我认为这可能是因为秒不包含在字符串的前端表示中,因为datetime数据库表中的精确是2013-11-04 16:14:52这样的,所以我现在包括秒,但仍然得到相同的错误,我不知道我认为这应该很重要,因为我LIKE在搜索词的任一侧使用带有通配符的操作数,所以即使没有它应该工作的秒数.
我在24小时转换为12小时时遇到了严重问题.
def standard_time(t):
t = datetime.strptime(t, "%H:%M")
return t
Run Code Online (Sandbox Code Playgroud)
当'24:00'我们吃饱了
ValueError: time data '24:00' does not match format '%H:%M'
Run Code Online (Sandbox Code Playgroud)
我也尝试使用%I(12小时)而不是%H进行转换,但每当小时数超过12时都会收到错误:
def standard_time(t):
t = datetime.strptime(t, "%I:%M")
return t
Run Code Online (Sandbox Code Playgroud)
陷入困境......
ValueError: time data '13:30' does not match format '%I:%M'
Run Code Online (Sandbox Code Playgroud)
python有一个简单的24小时到12小时的转换器吗?理想情况下23:00应该放出晚上11:00和24:00不应该抛出错误!
我在这做错了什么?
import datetime
someday = datetime.datetime(2014, 9, 23, 0, 0)
someday = datetime.datetime.strptime(someday[:10], '%Y-%m-%d')
print someday
Run Code Online (Sandbox Code Playgroud)
错误:
TypeError: 'datetime.datetime' object has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud) strptime ×10
python ×8
datetime ×5
date ×2
list ×1
python-2.7 ×1
python-3.x ×1
r ×1
rfc3339 ×1
ruby ×1
strftime ×1
time ×1
time-series ×1