如何在JavaScript中将YYYYMMDD格式字符串转为YYYY-MM-DD格式?
嘿,这个需求我碰到过好多次啦!关键是避开日期类型转换,直接操作原始字符串就稳了,给你几个不同场景下的实现方法:
各工具/语言实现方案
Python
直接用字符串切片拼接,完全不会触发日期类型转换,结果肯定是字符串:
# 原始日期字符串 raw_date = "20200101" # 切片拼接成目标格式 formatted_date = f"{raw_date[:4]}-{raw_date[4:6]}-{raw_date[6:]}" print(type(formatted_date)) # 输出 <class 'str'>,确认是字符串类型 print(formatted_date) # 输出 "2020-01-01"
如果是Python 3.5及以前版本,用str.format()写法也一样靠谱:
formatted_date = "{}-{}-{}".format(raw_date[:4], raw_date[4:6], raw_date[6:])
JavaScript
同样靠字符串截取来实现,全程不碰Date对象,保证输出是字符串:
const rawDate = "20200101"; const formattedDate = `${rawDate.slice(0,4)}-${rawDate.slice(4,6)}-${rawDate.slice(6)}`; console.log(typeof formattedDate); // 输出 "string" console.log(formattedDate); // 输出 "2020-01-01"
Excel
用文本函数组合处理,结果默认是文本格式,要是Excel自动识别成日期,调整单元格格式为「文本」就行:
=LEFT(A1,4)&"-"&MID(A1,5,2)&"-"&RIGHT(A1,2)
(A1是存放原始日期字符串的单元格)
通用思路总结
不管用什么工具,核心逻辑都是直接对原始字符串进行截取+拼接,不要使用任何日期解析或格式化的工具函数——那些函数很容易把结果转换成日期类型,反而麻烦。只要把前4位(年)、中间2位(月)、最后2位(日)切出来,用-连接就搞定啦。
内容的提问来源于stack exchange,提问作者Pandhu
相关产品推荐
相关产品推荐

