我有一个日期字符串,想要将其转换为日期类型:
我已尝试将datetime.datetime.strptime用于我想要的格式,但它会返回转换时间。
when = alldates[int(daypos[0])]
print when, type(when)
then = datetime.datetime.strptime(when, '%Y-%m-%d')
print then, type(then)
这是输出返回的内容:
2013-05-07 <type 'str'>
2013-05-07 00:00:00 <type 'datetime.datetime'>
我需要删除时间:00:00:00。
答案 0 :(得分:48)
print then.date()
你想要的是datetime.date对象。你拥有的是datetime.datetime对象。您可以在按上述方式打印时更改对象,也可以在创建对象时执行以下操作:
then = datetime.datetime.strptime(when, '%Y-%m-%d').date()
答案 1 :(得分:5)
>>> print then.date(), type(then.date())
2013-05-07 <type 'datetime.date'>
答案 2 :(得分:1)
要将字符串转换为日期,AFAIK最简单的方法是dateutil模块:
import dateutil.parser
datetime_object = dateutil.parser.parse("2013-05-07")
它还可以处理时区:
print(dateutil.parser.parse("2013-05-07"))
>>> datetime.datetime(2013, 5, 7, 1, 12, 12, tzinfo=tzutc())
如果您有日期时间对象,请说:
import pytz
import datetime
now = datetime.datetime.now(pytz.UTC)
并且你希望砍掉时间部分,然后我认为构造一个新对象而不是“减去时间部分”更容易。它更短更防弹:
date_part datetime.datetime(now.year, now.month, now.day, tzinfo=now.tzinfo)
它还保存时区信息,比timedelta减法更容易阅读和理解,并且您还可以选择在同一步骤中给出不同的时区(这是有道理的,因为您将没有时间无论如何)。
答案 3 :(得分:1)
如果需要使结果具有时区意识,则可以使用const res = ' 1 22 333 4444 5 6 '
.split(' ')
.filter(Boolean)
.map(v => [v])
.reduce((acc, curr, idx) => {
acc = idx % 2 ? [...acc.slice(0, acc.length-1), acc[acc.length-1].concat(curr)] : [...acc, curr];
return acc;
}, []);
console.log(res);
对象的replace()
方法。这样可以保留时区,因此您可以
datetime
请注意,这将返回一个 new 日期时间对象->>> from django.utils import timezone
>>> now = timezone.now()
>>> now
datetime.datetime(2018, 8, 30, 14, 15, 43, 726252, tzinfo=<UTC>)
>>> now.replace(hour=0, minute=0, second=0, microsecond=0)
datetime.datetime(2018, 8, 30, 0, 0, tzinfo=<UTC>)
保持不变。
答案 4 :(得分:0)
对我来说,我需要保留一个时间对象,因为我使用的是UTC,这有点痛苦。所以,这就是我最终做的事情:
date = datetime.datetime.utcnow()
start_of_day = date - datetime.timedelta(
hours=date.hour,
minutes=date.minute,
seconds=date.second,
microseconds=date.microsecond
)
end_of_day = start_of_day + datetime.timedelta(
hours=23,
minutes=59,
seconds=59
)
示例输出:
>>> date
datetime.datetime(2016, 10, 14, 17, 21, 5, 511600)
>>> start_of_day
datetime.datetime(2016, 10, 14, 0, 0)
>>> end_of_day
datetime.datetime(2016, 10, 14, 23, 59, 59)
答案 5 :(得分:0)
您只需使用conn = pgconn(------)
cursor = pgconn.Cursor()
query1 = "select * from table"
query2 = "select * from table2 where Id=(%s);"
cursor.execute(query1)
result = query1.fetchall()
for row in result:
If row.a == 2:
cursor.execute(query2, [row.time])
,熊猫便会将日期元素转换为ISO日期格式-pd.to_datetime(then)
。
您也可以将其作为地图/应用传递,也可以在数据框/系列中使用。
答案 6 :(得分:0)
您可以使用以下代码:
week_start = str(datetime.today() - timedelta(days=datetime.today().weekday() % 7)).split(' ')[0]