使用带有正则表达式的 python 日期时间将儒略日期转换为 YYYYMMDD

Convert julian date to YYYYMMDD using python datetime with regex

有没有一种方法可以使用 python 日期时间和正则表达式将儒略日期转换为具有以下格式的日历:YYYYMMDD

我的字符串是这样的

abc_8g_1980_312.tif

其中 1980_312 分别是 YYYY_DDD。所需的输出应为 19801107 我正在尝试使用网站 https://regex101.com/

谢谢

Regex 是转换日期的错误工具,您仍然可以使用它来提取字符串的 'interesting' 部分(来自图像名称的 YYYY_DDD),不过:

import re

filename = 'abc_8g_1980_312.tif'
date_str = re.search(r'\d{4}_\d+', filename).group()  # '1980_312'

当然,如果可能出现的模式比较多,我建议把模式严格一点,比如你可以把上面的正则放在一个组里,然后在后面匹配\.tif$,这样可以保证它总是在 tif 个文件名的末尾搜索模式。如果它总是这种格式,你可以完全放弃正则表达式,只需拆分/分区你的字符串以提取 'important' 部分,但我会把它留给你作为练习 ;)

从文件名中获取 YYYY_DDD 部分后,您可以使用 datetime.datetime.strptime() 获取实际日期,例如:

import datetime

real_date = datetime.datetime.strptime(date_str, '%Y_%j')
# datetime.datetime(1980, 11, 7, 0, 0)

最后,要获得您想要的输出,您可以使用 datetime.datetime.strftime():

str_date = real_date.strftime('%Y%m%d')
# 19801107