Python 自定义日期时间(?)格式处理

标签 python date datetime time strptime

假设我有一个字符串,表示一个时间和星期几:

例如'52300',表示一周的第5天(星期五),23小时00分。

我如何将它解析为时间或日期时间对象以添加 timedelta(hours=3) 并将其恢复为这种奇怪的格式?预期输出为“60200”字符串。

我试过:

tow_str = '52300'
tow = datetime.datetime.strptime(tow_str, "%w%H%M") + datetime.timedelta(hours=3)
print(tow.strftime("%w%H%M"))

返回“20200”而不是“60200”

最佳答案

准确地解析带有 %w 的日期需要您包含日期本身,否则日期将设置为 1900-01-01:

>>> import datetime
>>> tow_str = '52300'
>>> datetime.datetime.strptime(tow_str, "%w%H%M")
datetime.datetime(1900, 1, 1, 23, 0)

当格​​式化回一个字符串时,你总是以 1 结尾:

>>> datetime.datetime.strptime(tow_str, "%w%H%M").strftime("%w%H%M")
'12300'

没有日期,%w 是没有意义的。

您可以根据今天的日期生成工作日中的日期,并且只解析时间:

def nearest_date_for_weekday(weekday):
    today = datetime.date.today()
    return today + datetime.timedelta(days=weekday - today.weekday())

parsed_date = datetime.datetime.combine(
    nearest_date_for_weekday(int(tow_str[0])), 
    datetime.datetime.strptime(tow_str[1:], '%H%M').time())

print parsed_date.strftime('%w%H%M')

因此这会生成一个完整的 datetime 对象,因此格式化回字符串将为 %w 提供一个有意义的值。

关于Python 自定义日期时间(?)格式处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28963665/

相关文章:

python - 类型错误 : unhashable type: 'list' when find the composition of a product

python - PIL协助Python

php - 获取给定月份的所有日期和日期

php - PHP 中的错误 $date2 = $date1->format ('Y-m-d' )

mysql - 如何在查询中为 MYSQL 中的日期添加天数

python - 如何优化和寻找大量输入的输出?

python - 不包括 "-"标记的正则表达式

sql - 仅将带有年份和月份的字符串...转换为仅限年份和月份的日期格式

php - MySQL,如何插入空日期

c# - 如何在 C# 中将字符串解析为 dateTime?