我想把一个 MM/DD/YYYY 的日期转换成长日期,例如:02/12/2013
转换成 Tuesday February 12 2013
。
我查看了 MomentJS 和其他的 JS 方法,但是没有找到我想要的。或者至少,我认为没有。
有没有一种方法可以准确地进行这个日期转换呢?
我想把一个 MM/DD/YYYY 的日期转换成长日期,例如:02/12/2013
转换成 Tuesday February 12 2013
。
我查看了 MomentJS 和其他的 JS 方法,但是没有找到我想要的。或者至少,我认为没有。
有没有一种方法可以准确地进行这个日期转换呢?
var date = new Date(2013, 1, 12);
console.log(moment(date).format('dddd MMMM D Y'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>
如果你想把一个日期字符串转换成长日期格式的字符串,你可以像这样做。
var longDateStr = moment('02/12/2013', 'M/D/Y').format('dddd MMMM D Y');
console.log(longDateStr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>
如果您不想使用其他脚本,可以使用Date
和一些数组。
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var now = new Date('02/12/2013');
console.log(days[now.getDay()] + ' ' + months[now.getMonth()] + ' ' + now.getDate() + ' ' + now.getFullYear()); //Tuesday February 12 2013
function getData() {
var d = new Date("02/12/2013");
var options = {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric'
};
var n = d.toLocaleDateString('en-US', options);
var t = d.toLocaleTimeString('en-GB')
var replase = n.replace(new RegExp(',', 'g'), ' ')
document.getElementById("demo").innerHTML = replase
}
getData()
<span id="demo"></span>
console.log(moment('02/12/2013', 'MM/DD/YYYY').format('dddd MMMM D Y'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>
解析需要手动完成,Date.parse。Intl对象是ECMAScript国际化API的命名空间,提供语言敏感的字符串比较、数字格式化以及日期和时间格式化。Collator、NumberFormat和DateTimeFormat对象的构造函数是Intl对象的属性。
“Date.UTC” 用于为 Intl.DateTimeFormat#format 提供来自“parts”的日期。不建议使用Date.parse,因为在ES5之前,字符串的解析完全依赖于实现。不同主机解析日期字符串的方式仍然存在许多差异,因此日期字符串应该手动解析(如果需要适应多种不同的格式,则可以使用库来帮助)。
最后,从“en-US”格式化字符串中移除“,”,以使其符合你的要求。“Date.UTC()”方法接受与构造函数的最长形式相同的参数,并返回自1970年1月1日00:00:00以来,世界协调时间中的毫秒数。
const parts = '02/12/2013'.split('/');
parts.unshift(parts.pop());
parts[1] -= 1;
const dateString = new Intl.DateTimeFormat('en-US', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
timeZone: 'UTC'
}).format(Date.UTC(...parts)).replace(/,/g, '');
console.log(dateString);
var date = new Date("01/01/2000")
date.toDateString() //"Sat Jan 01 2000"
FullJS:
function mydate(date)
{
var
month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
;
return days[date.getDay()]+' '+month[date.getMonth()]+' '+date.getDate()+' '+date.getFullYear()
}
console.log(mydate(new Date()));
参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date
使用 moment 库,
moment().format('dddd MMMM Do YYYY');
Do
会将“nth”添加到日期中,将其更改为D
仅显示数字,但由于您正在编写所有单词,最好使用“nth”。
moment.js
还是只想用纯 JavaScript? - Mohammad