Google Sheets日期文本转日期:含时段字符串的一键转换方案问询
解决Google Sheets中日期文本转可比较日期格式的问题
嘿,我来帮你搞定这两个日期转换的需求,特别是那个有点棘手的「April 30, 20181:00 PM - 1:45 PM PT」字符串转换!
一、处理特定格式字符串:「April 30, 20181:00 PM - 1:45 PM PT」
你提到已经用=SPLIT(C2,"8")拆分,但其实用正则表达式可以更优雅地一键提取并转换。这个字符串的核心问题是年份(2018)和开始时间(1:00 PM)粘在了一起,我们需要先把它们分开,再组合成Google Sheets能识别的日期时间格式。
方法1:直接转成日期时间序列号
用REGEXEXTRACT分别提取日期部分和时间部分,拼接后用--强制转换为日期时间序列号(Google Sheets用数字存储日期时间):
=--(REGEXEXTRACT(C2, "^([A-Za-z]+ \d+, \d{4})")&" "®EXEXTRACT(C2, "\d{4}(\d+:\d+ [AP]M)"))
REGEXEXTRACT(C2, "^([A-Za-z]+ \d+, \d{4})"):提取开头的日期部分(比如April 30, 2018)REGEXEXTRACT(C2, "\d{4}(\d+:\d+ [AP]M)"):提取年份后面的开始时间(比如1:00 PM)- 拼接后得到
April 30, 2018 1:00 PM,--把这个文本转成可计算的日期时间数字
方法2:用DATEVALUE+TIMEVALUE组合
如果你更倾向于显式拆分日期和时间,可以用这两个函数:
=DATEVALUE(REGEXEXTRACT(C2, "^([A-Za-z]+ \d+, \d{4})")) + TIMEVALUE(REGEXEXTRACT(C2, "\d{4}(\d+:\d+ [AP]M)"))
DATEVALUE将日期文本转成日期序列号,TIMEVALUE将时间文本转成时间序列号,相加后得到完整的日期时间数字
最后一步:选中单元格,设置格式为「日期时间」(比如MM/DD/YYYY HH:MM AM/PM),这样就能看到正常格式的日期,并且可以直接进行比较、排序等操作。
二、通用日期文本转日期格式的方法
如果你的日期文本格式不固定,通用思路是用正则提取年、月、日的核心信息,再用DATE函数组合:
比如对于类似March 15, 2023的文本:
=DATE( REGEXEXTRACT(A1, ", (\d{4})"), // 提取年份 MONTH(REGEXEXTRACT(A1, "^([A-Za-z]+)")&" 1"), // 提取月份文本转成数字(加" 1"是让MONTH能识别) REGEXEXTRACT(A1, " (\d+), ") // 提取日期 )
这个公式可以适配大多数英文月份开头的日期文本,提取后组合成标准日期格式,同样设置单元格格式后就能使用。
内容的提问来源于stack exchange,提问作者sigur7
相关产品推荐
相关产品推荐

