我正在尝试将 MM/DD/YYYY 日期转换为长日期。因此,例如,02/12/2013
将转换为类似Tuesday February 12 2013
.
我查看了 MomentJS 和其他 JS 方法,但没有真正做到我想要的。或者至少,我不这么认为。
有没有办法准确地进行这个日期转换?
我正在尝试将 MM/DD/YYYY 日期转换为长日期。因此,例如,02/12/2013
将转换为类似Tuesday February 12 2013
.
我查看了 MomentJS 和其他 JS 方法,但没有真正做到我想要的。或者至少,我不这么认为。
有没有办法准确地进行这个日期转换?
如果您不想要任何其他可以使用的脚本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
使用 moment.js,
您可以使用 JavaScript Date 对象来执行此操作
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>
我认为有一些简单的方法可以做到这一点。
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>
使用 moment.js 非常简单:
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>
在现代浏览器上,您可以使用Intl API
Intl 对象是 ECMAScript 国际化 API 的命名空间,它提供语言敏感的字符串比较、数字格式以及日期和时间格式。Collator、NumberFormat 和 DateTimeFormat 对象的构造函数是 Intl 对象的属性。
解析是手动进行的,Date.parse
在 ES5 之前不建议使用 Date.parse,字符串的解析完全依赖于实现。不同主机解析日期字符串的方式仍然存在许多差异,因此应该手动解析日期字符串(如果要适应许多不同的格式,库可以提供帮助)。
Date.UTC用于提供parts
Intl.DateTimeFormat #format的日期。
Date.UTC() 方法接受与构造函数的最长形式相同的参数,并返回 Date 对象中自世界标准时间 1970 年 1 月 1 日 00:00:00 以来的毫秒数
最后,,
从en-US
格式化字符串中删除 's,使其符合您的要求。
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);
你可以使用普通的 Javascript Date 方法来做类似的事情:
var date = new Date("01/01/2000")
date.toDateString() //"Sat Jan 01 2000"
完整的:
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/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
使用时刻,
moment().format('dddd MMMM Do YYYY');
在momentJS 的主页上,您可以看到所有可能的日期格式列表(http://momentjs.com/)。
Do
在日期中添加“nth”,使其D
仅显示数字,但是由于您全部用文字书写,因此最好使用“nth”