如何将短日期转换为这种格式:DDD MMM DD YYYY GMT+0800(X 国家标准时间)?

ale*_*lex 3 javascript datetime date luxon

当我这样做时new Date()

Thu Dec 28 2017 10:17:58 GMT+0800 (??????)
Run Code Online (Sandbox Code Playgroud)

如果我.valueOf()在那个日期申请,我会得到:

1514427724039
Run Code Online (Sandbox Code Playgroud)

这就是我想要的。

现在,我需要应用.valueOf()到这样的日期:2017/12/28。我尝试使用Luxon转换日期(因为应用于.valueOf()YYYY/MM/DD 不会产生数字):

DateTime.fromISO(startDate.replace(/\//g, '-')).toRFC2822()
// => Thu, 28 Dec 2017 00:00:00 +0800
Run Code Online (Sandbox Code Playgroud)

但是,应用valueOf()该结果会返回相同的字符串。不是第一个例子中的数字。

我应该怎么做才能从中产生一个数值YYYY/MM/DD?只是我做了DDD MMM DD YYYY GMT+0800 (X country standard time)

sni*_*ack 5

我认为您正在忘记类型。

fromISO()返回 Luxon DateTime 对象,但toRFC2822返回日期的 RFC 2822 字符串表示形式。

所以你valueOf()是在字符串上调用的,而不是 DateTime。

正如其他人所指出的那样,你只需要调用valueOf()上的结果fromISO()

为了显示:

var dt = luxon.DateTime.fromISO('2017-12-05'); // returns a Luxon DateTime object
console.log('fromISO returns an', typeof dt);

var rfc = dt.toRFC2822(); // returns a string
console.log('toRFC2822 returns a', typeof rfc);

var valueOfRFC = rfc.valueOf(); // string.valueOf() is just that string
console.log('strings are their own values?', rfc === valueOfRFC);

var valueOfDT = dt.valueOf(); // this is what you want
console.log('value of datetime', valueOfDT);
Run Code Online (Sandbox Code Playgroud)
<script src="https://moment.github.io/luxon/global/luxon.min.js"></script>
Run Code Online (Sandbox Code Playgroud)