Python 如何检查时间是否为午夜,如果为真则不显示时间

标签 python datetime timezone pytz

我正在修改我们的太平洋时区过滤器以包含时间选项。如果午夜,我不希望显示时间组件。到目前为止,我们使用的唯一导入是 dateutil.parser。任何关于最佳解决方案的建议将不胜感激!谢谢。

def to_pacific_date_str(timestamp, format='%Y-%m-%d', time=False):
    pacific_timestamp = timestamp

    if time:
        format='%Y-%m-%d %H:%M' # 2016-10-03 00:00
    if timestamp.tzname() is None:
        # setting timezone lost when pulled from DB
        utc_timestamp = timestamp.replace(tzinfo=pytz.utc)
        # always converting to pacific timezone
        pacific_timestamp = utc_timestamp.astimezone(pytz.timezone('US/Pacific'))
    return pacific_timestamp.strftime(format)

最佳答案

我认为最好的办法是在传递 datetime 之前从 time() 中获取它,然后将其与 datetime.time 进行比较(0, 0)

import pytz
import datetime

def to_pacific_date_str(timestamp, date_fmt='%Y-%m-%d', time=False):
    pacific_timestamp = timestamp

    if timestamp.tzinfo is None:
        # setting timezone lost when pulled from DB
        utc_timestamp = timestamp.replace(tzinfo=pytz.utc)
        # always converting to pacific timezone
        pacific_timestamp = utc_timestamp.astimezone(pytz.timezone('US/Pacific'))

    if time and pacific_timestamp.time() != datetime.time(0, 0):
        date_fmt = '%Y-%m-%d %H:%M' # 2016-10-03 00:00

    return pacific_timestamp.strftime(date_fmt)

请注意,我已将 format 更改为 date_fmt,因为 format() is already a builtin .此外,从设计的角度来看,让 time 覆盖指定的格式字符串可能不是一个好主意,因此可以将“添加时间”部分更改为 date_fmt = date_fmt + ' %H :%M'.

演示:

>>> PST = pytz.timezone('US/Pacific')
>>> to_pacific_date_str(PST.localize(datetime.datetime(2015, 4, 1, 0, 0)), time=True)
'2015-04-01'

>>> PST = pytz.timezone('US/Pacific')
>>> to_pacific_date_str(PST.localize(datetime.datetime(2015, 4, 1, 2, 0)), time=True)
'2015-04-01 02:00'

关于Python 如何检查时间是否为午夜,如果为真则不显示时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40118869/

相关文章:

python - 如何从字典中输出值而不将其打印为列表?

mysql - 如何更改 Laravel 项目的 MySQL DB UTC 时间?

date - 如何使用不带数字偏移量的默认区域格式化日期

javascript - 获取服务器端时间和客户端时间之间的差异并显示它

javascript - 将 JSON 日期发送到 PHP 后端,时区丢失

python - 为什么这个 Python 字典列表只有字典的键?

python - TemplateDoesNotExist 在项目文件夹 django 1.8

python - 调用 flickrapi.photosets.getPhotos 方法时出错

mysql - 从数据库中检索两个日期之间的时间段内的数据

php strtotime() 不读取日期