Fri Nov 10 05:45:36 +0000 2017
我已尝试过时刻和计时节点。两者都被这种日期格式所困扰。
获取有效UTC日期的任何建议?
由于
答案 0 :(得分:2)
要添加@ CertainPerformance的答案,如果您尝试使用MomentJS,代码的问题在于它不是标准的ISO日期字符串。直接解析而不指定格式将导致错误的结果和类似的警告:
Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release.
要缓解,请始终将格式传递给MomentJS构造函数,如下所示:
const inputStr = "Fri Nov 10 05:45:36 +0000 2017"
const mom = moment(inputStr, 'ddd MMM D HH:mm:ss ZZ YYYY');
console.log(mom.toISOString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
答案 1 :(得分:0)
我认为这应该会帮助你:
var date = new Date("Fri Nov 10 05:45:36 +0000 2017").toISOString();
date = date.split("T")[0];
console.log(date);
答案 2 :(得分:0)
片刻工作得很好:
const inputStr = "Fri Nov 10 05:45:36 +0000 2017"
const mom = moment(inputStr, 'ddd MMM D HH:mm:ss ZZ YYYY');
console.log(mom.toISOString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
答案 3 :(得分:0)
您可以看到我编写的代码返回的每个数组的两个项目之间的差异,以处理您提供的表单的日期字符串。
最后,您可以查看给出的完整代码示例。
在第一种情况下,两者都是相同的。
在第二种情况下,两者都不同。
console.log(dateArr1); // [ '2017-11-10', '2017-11-10' ];
console.log(dateArr2); // [ '2018-05-15', '2018-05-14' ];
很明显我们的UTC转换工作正常。
请查看下面的代码示例并尝试了解。这很简单。
注意»函数内的所有注释均为
inputDateStr
:“Fri Nov 10 05:45:36 +0000 2017”
// All the comments inside function are for
// inputDateStr: "Fri Nov 10 05:45:36 +0000 2017"
function getMyUTCDate(inputDateStr)
{
var inputDateString = inputDateStr;
var date = new Date(inputDateString);
var dateArr = []; // To store 2 dates, simple one & full UTC one
console.log(date); // 2017-11-10T05:45:36.000Z
// ............... SIMPLE EXAMPLE ..........................
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes()
var seconds = date.getSeconds();
console.log(year); // 2017
console.log(month); // 10
console.log(day); // 10
console.log(hours); // 11
console.log(minutes); // 15
console.log(seconds); // 36
utcDate = new Date(Date.UTC(year, month, day, hours, minutes, seconds));
utcDateString = utcDate.toUTCString();
console.log(utcDate); // 2017-11-10T11:15:36.000Z
console.log(utcDateString); // Fri, 10 Nov 2017 11:15:36 GMT
var dt1 = utcDate.toISOString().split('T')[0]
dateArr.push(dt1)
console.log(dt1); // 2017-11-10
// .................. FULL UTC EXAMPLE ..........................
var utcYear = date.getUTCFullYear();
var utcMonth = date.getUTCMonth();
var utcDay = date.getUTCDate();
var utcHours = date.getUTCHours();
var utcMinutes = date.getUTCMinutes()
var utcSeconds = date.getUTCSeconds();
console.log(utcYear); // 2017
console.log(utcMonth); // 10
console.log(utcDay); // 10
console.log(utcHours); // 5
console.log(utcMinutes);// 45
console.log(utcSeconds);// 36
var utcDate2 = new Date(Date.UTC(utcYear, utcMonth, utcDay, utcHours, utcMinutes, utcSeconds));
var utcDateString2 = utcDate2.toUTCString();
console.log(utcDate2); // 2017-11-10T05:45:36.000Z
console.log(utcDateString2); // Fri, 10 Nov 2017 05:45:36 GMT
// Get UTC Date
var dt2 = utcDate2.toISOString().split('T')[0]
dateArr.push(dt2)
console.log(dt2); // 2017-11-10
return dateArr;
}
// Inputs
var inputDateString1 = "Fri Nov 10 05:45:36 +0000 2017";
var inputDateString2 = "Mon May 14 23:59:36 +0000 2018";
var dateArr1 = getMyUTCDate(inputDateString1);
var dateArr2 = getMyUTCDate(inputDateString2);
// Print dates
console.log(dateArr1); // [ '2017-11-10', '2017-11-10' ]
console.log(dateArr2); // [ '2018-05-15', '2018-05-14' ]
developer.mozilla.org - Date processing functions
感谢。