【问题标题】:python how to round a timestamp by minute? [duplicate]python如何按分钟舍入时间戳? [复制]
【发布时间】:2021-05-07 11:17:52
【问题描述】:

大家好,我正在使用这两个功能

def utc_to_local(utc_dt):
    return utc_dt.replace(tzinfo=tz.gettz('UTC')).astimezone(tz.gettz('America/New_York'))


def perdelta(start, end, delta):
    curr = start
    while curr < end:
        yield curr
        curr += delta

for result in perdelta(utc_to_local(datetime.datetime.utcnow()- datetime.timedelta(minutes= 120)),utc_to_local(datetime.datetime.utcnow()- datetime.timedelta(minutes=60)), datetime.timedelta(minutes=1)):
    print(result)

这段代码的结果给了我一个我想要的时间戳列表

2021-02-02 19:00:03.438953-05:00
2021-02-02 19:01:03.438953-05:00
2021-02-02 19:02:03.438953-05:00
2021-02-02 19:03:03.438953-05:00
2021-02-02 19:04:03.438953-05:00
2021-02-02 19:05:03.438953-05:00
2021-02-02 19:06:03.438953-05:00
2021-02-02 19:07:03.438953-05:00
2021-02-02 19:08:03.438953-05:00
2021-02-02 19:09:03.438953-05:00
2021-02-02 19:10:03.438953-05:00
2021-02-02 19:11:03.438953-05:00
2021-02-02 19:12:03.438953-05:00
2021-02-02 19:13:03.438953-05:00
2021-02-02 19:14:03.438953-05:00
2021-02-02 19:15:03.438953-05:00
2021-02-02 19:16:03.438953-05:00
2021-02-02 19:17:03.438953-05:00
2021-02-02 19:18:03.438953-05:00
2021-02-02 19:19:03.438953-05:00
2021-02-02 19:20:03.438953-05:00
2021-02-02 19:21:03.438953-05:00
2021-02-02 19:22:03.438953-05:00
2021-02-02 19:23:03.438953-05:00
2021-02-02 19:24:03.438953-05:00
2021-02-02 19:25:03.438953-05:00
2021-02-02 19:26:03.438953-05:00
2021-02-02 19:27:03.438953-05:00
2021-02-02 19:28:03.438953-05:00
2021-02-02 19:29:03.438953-05:00
2021-02-02 19:30:03.438953-05:00
2021-02-02 19:31:03.438953-05:00
2021-02-02 19:32:03.438953-05:00
2021-02-02 19:33:03.438953-05:00
2021-02-02 19:34:03.438953-05:00
2021-02-02 19:35:03.438953-05:00
2021-02-02 19:36:03.438953-05:00
2021-02-02 19:37:03.438953-05:00
2021-02-02 19:38:03.438953-05:00
2021-02-02 19:39:03.438953-05:00
2021-02-02 19:40:03.438953-05:00
2021-02-02 19:41:03.438953-05:00
2021-02-02 19:42:03.438953-05:00
2021-02-02 19:43:03.438953-05:00
2021-02-02 19:44:03.438953-05:00
2021-02-02 19:45:03.438953-05:00
2021-02-02 19:46:03.438953-05:00
2021-02-02 19:47:03.438953-05:00
2021-02-02 19:48:03.438953-05:00
2021-02-02 19:49:03.438953-05:00
2021-02-02 19:50:03.438953-05:00
2021-02-02 19:51:03.438953-05:00
2021-02-02 19:52:03.438953-05:00
2021-02-02 19:53:03.438953-05:00
2021-02-02 19:54:03.438953-05:00
2021-02-02 19:55:03.438953-05:00
2021-02-02 19:56:03.438953-05:00
2021-02-02 19:57:03.438953-05:00
2021-02-02 19:58:03.438953-05:00
2021-02-02 19:59:03.438953-05:00
2021-02-02 20:00:03.438953-05:00

但我想要实现的是将每个时间戳都舍入到最接近的分钟。例如,我希望将19:00:03.43895319:01:03.43895319:02:03.43895319:03:03.438953 转换为19:00:0019:01:0019:02:00、...、...等到最终时间戳。我还没有想出实现这一点。有什么想法吗?

【问题讨论】:

    标签: python python-3.x datetime timedelta


    【解决方案1】:

    您可以使用datetime.datetime.replace(microsecond=0)
    示例:

    import datetime
    from dateutil import tz
    now = datetime.datetime.now()
    print(now.replace(tzinfo=tz.gettz('UTC')).astimezone(tz.gettz('America/New_York'))) 
    # > 2021-02-03 04:47:55.259843-05:00
    print(now.replace(tzinfo=tz.gettz('UTC')).astimezone(tz.gettz('America/New_York')).replace(microsecond=0))
    # > 2021-02-03 04:47:55-05:00
    

    【讨论】:

    • 这不是“四舍五入”,它只是将微秒设置为零
    猜你喜欢
    • 2015-01-17
    • 1970-01-01
    • 2023-03-16
    • 2017-07-25
    • 2011-01-22
    • 2017-12-02
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多