【问题标题】:python datetime remove minute and second informationpython datetime 删除分钟和秒信息
【发布时间】:2016-11-16 12:02:10
【问题描述】:

我有一个包含小时、分钟和秒信息的日期时间数组。我想从中删除分钟和秒信息并将小时更改为下一个小时。

即 peak_interval

array([datetime.datetime(2010, 12, 13, 6, 0),
       datetime.datetime(2011, 1, 12, 7, 0),
       datetime.datetime(2011, 3, 23, 16, 45),
       datetime.datetime(2011, 4, 19, 17, 15)], dtype=object)

我想获得以下内容:

peak_interval
array([datetime.datetime(2010, 12, 13, 7, 0),
       datetime.datetime(2011, 1, 12, 8, 0),
       datetime.datetime(2011, 3, 23, 17, 0),
       datetime.datetime(2011, 4, 19, 18, 0)], dtype=object)

我可以编写某种 for 循环,但如果可能的话,我会尝试使用一些聪明的方法。

【问题讨论】:

标签: python datetime


【解决方案1】:

一种选择是使用来自datetimetimedelta

import datetime
import numpy as np
def reset(dt):
    return dt + datetime.timedelta(hours = 1, minutes = -dt.minute, seconds = -dt.second)

np.vectorize(reset)(peak_interval)

# array([datetime.datetime(2010, 12, 13, 7, 0),
#        datetime.datetime(2011, 1, 12, 8, 0),
#        datetime.datetime(2011, 3, 23, 17, 0),
#        datetime.datetime(2011, 4, 19, 18, 0)], dtype=object)

【讨论】:

    【解决方案2】:

    您可以使用datetime.datetime.replace轻松修改几个字段

    old_date = datetime.datetime(2011, 3, 23, 16, 45)
    new_date = old_date.replace(minute=0, second=0) + datetime.timedelta(hours=1)
    

    【讨论】:

    • 嗨@KevinMGranger,它正在用0 替换minutesseconds,我们可以从日期时间中完全删除这些信息吗?
    • @AbdulRehman 一个datetime 根据定义有一个date 和一个time。如果您不想要时间信息,请使用date。您可以通过调用datetime.date() 转换datetime
    【解决方案3】:
    now = datetime.now()
    now2 = datetime(now.year,now.month,now.day,now.hour)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多