Spreadsheet中:mm/dd/yy 12小时制时间转24小时制格式求助
解决Spreadsheet中12小时制文本转24小时制可计算日期值的方法
首先得明确:你之前尝试的格式设置、拆分工具等操作,大多只是改变了显示样式,或者处理后结果仍是纯文本,没法被TRUNC()这类函数识别为可计算的日期时间数值。我们的核心目标是把文本型时间转成真正的日期时间数值,同时设置符合需求的显示格式。
方法一:公式直接转换(推荐)
根据你的时间文本格式,选对应的公式即可:
情况1:时间文本是 8/16/2017 5:15:00 PM(空格+大写AM/PM)
在空白单元格输入公式:
=DATEVALUE(LEFT(A1, FIND(" ", A1)-1)) + TIMEVALUE(MID(A1, FIND(" ", A1)+1, LEN(A1)))
- 逻辑拆解:
LEFT(A1, FIND(" ", A1)-1)提取日期部分,DATEVALUE()把它转成日期数值;MID(...)提取时间+AM/PM部分,TIMEVALUE()会自动识别12小时制并转成24小时制的时间数值;两者相加就得到了完整的日期时间数值。
情况2:时间文本是 8/16/2017 5:15:00.pm(点+小写am/pm)
先修正文本格式再转换,公式:
=DATEVALUE(LEFT(A1, FIND(" ", A1)-1)) + TIMEVALUE(SUBSTITUTE(SUBSTITUTE(MID(A1, FIND(" ", A1)+1, LEN(A1)), ".pm", " PM"), ".am", " AM"))
- 逻辑拆解:先用
SUBSTITUTE()把.pm/.am替换成标准的PM/AM,再用和情况1一样的逻辑完成转换。
方法二:用Text to Columns拆分后合并
如果觉得公式复杂,试试拆分工具的方式:
- 选中包含时间文本的列,点击菜单栏的
Data > Text to Columns - 第一步选
Delimited,点击「下一步」 - 勾选
Space作为分隔符,点击「下一步」 - 第一列(日期部分)选
Date格式,类型设为MDY;第二列(时间+AM/PM)选Text格式,点击「完成」 - 在空白单元格输入公式
=DATEVALUE(C1) + TIMEVALUE(D1)(假设拆分后日期在C列,时间在D列),就能得到日期时间数值
最后一步:设置显示格式
转换完成后,选中结果单元格:
- 右键选「格式单元格」(或对应Spreadsheet的「格式」菜单)
- 选「自定义格式」,输入
m/d/yyyy HH:mm:ss(注意HH是24小时制,hh是12小时制) - 确认后,单元格就会显示成你需要的
8/16/2017 17:15:00样式
现在你再用 A1-TRUNC(A1) 提取时间就完全没问题了——因为底层是日期时间数值,TRUNC(A1) 会提取日期的整数部分,相减后得到的就是时间的小数部分,完全支持计算。
内容的提问来源于stack exchange,提问作者Anagha
相关产品推荐
相关产品推荐

