解决方案 1 - 获取日期时间值
您可以使用公式转换这些类型的字符串,而无需在菜单中设置格式:
= DATE(
REGEXEXTRACT(A2, "\d{4}"),
MATCH(
LOWER(REGEXEXTRACT(A2, "^\w+")),
{"jan"; "feb"; "mar"; "apr"; "may"; "jun"; "jul"; "aug"; "sep"; "oct"; "nov"; "dec"},
0
),
REGEXEXTRACT(A2, "\s(\d{2}),")
)
+ TIME(
MOD(REGEXEXTRACT(A2, "(\d+):") + IF(REGEXMATCH(A2, "(?i)\s(?:(?:0?\d|1[^2]):\d+pm|12:\d+am)$"), 12, 0), 24),
REGEXEXTRACT(A2, ":(\d{2})"),
0
)
那么C1 使用这个公式格式化了日期时间:
=TEXT(B2, "dd/m/yyyy hh:mm:ss")
解决方案 2 - 获取正确的字符串
=SUBSTITUTE(
SUBSTITUTE(
REGEXREPLACE(
A2,
"(?i)^\D+(\d+)\D+(\d+)\D+\d+:(\d+)(?:PM|AM)$",
"$1/month/$2 hour:$3:00"
),
"month",
MATCH(
LOWER(REGEXEXTRACT(A2, "^\w+")),
{"jan"; "feb"; "mar"; "apr"; "may"; "jun"; "jul"; "aug"; "sep"; "oct"; "nov"; "dec"},
0
)
),
"hour",
MOD(REGEXEXTRACT(A2, "(\d+):") + IF(REGEXMATCH(A2, "(?i)\s(?:(?:0?\d|1[^2]):.+pm|12:.+am)$"), 12, 0), 24)
)