如何去除JavaScript中toDateString()返回值开头的星期名称?
解决方法:移除toDateString结果中的开头星期名称
嘿,这个需求其实挺常见的!咱们有几种简单又可靠的方式来实现,我给你一一拆解:
方法1:字符串分割拼接(最直观)
toDateString()返回的格式通常是"星期缩写 月 日 年"(比如"Wed Oct 11 2023"),我们可以直接把字符串按空格拆分,去掉第一个元素(星期)后再拼回去:
var d = new Date(); // 拆分字符串 → 去掉星期部分 → 重新拼接 var dateWithoutWeekday = d.toDateString().split(' ').slice(1).join(' '); document.getElementById("demo").innerHTML = dateWithoutWeekday;
原理很简单:
split(' ')把字符串拆成数组:["Wed", "Oct", "11", "2023"]slice(1)从索引1开始截取数组剩下的部分:["Oct", "11", "2023"]join(' ')把数组重新拼成字符串:"Oct 11 2023"
方法2:正则表达式替换
如果想更简洁,可以用正则匹配开头的星期部分并替换为空:
var d = new Date(); // 匹配开头的字母(星期缩写)加空格,替换成空 var dateWithoutWeekday = d.toDateString().replace(/^[A-Za-z]+ /, ''); document.getElementById("demo").innerHTML = dateWithoutWeekday;
正则^[A-Za-z]+ 的意思是:
^匹配字符串开头[A-Za-z]+匹配一个或多个大小写字母(对应星期的3个缩写字母)- 最后的空格匹配星期后面的分隔空格
方法3:用Intl.DateTimeFormat生成目标格式(最健壮)
如果担心不同浏览器/地区下toDateString()的格式有差异(虽然大部分情况都是星期开头,但稳妥起见),可以直接用国际化API生成你需要的格式:
var d = new Date(); // 配置格式:月份缩写、数字日期、数字年份 var formatter = new Intl.DateTimeFormat('en-US', { month: 'short', day: 'numeric', year: 'numeric' }); var dateWithoutWeekday = formatter.format(d); document.getElementById("demo").innerHTML = dateWithoutWeekday;
这种方法不需要依赖toDateString()的输出格式,直接生成"Oct 11 2023"这样的结果,兼容性和可靠性都更高。
内容的提问来源于stack exchange,提问作者Reinstecker
相关产品推荐
相关产品推荐

