gpt4 book ai didi

javascript - 不同格式的日期时间的转换和比较

转载 作者:行者123 更新时间:2023-12-03 06:12:06 24 4
gpt4 key购买 nike

目前,我有一个应用程序正在对 SharePoint api 进行休息调用,为我提供上次修改日期,然后我将该日期与我当前在 Word 文档内的内容控件中作为标记存储的日期进行比较。目前,我正在使用 New Date() 方法来尝试比较两个日期,但是我得到了两个不同的时间。这两个日期时间均采用 UTC,但格式不同。

我从 SharePoint 获取的日期时间采用以下格式:2016-08-27T17:40:09Z

存储在内容控件标记中的日期时间:8/27/2016 5:40:09 PM

当前代码:

 for (var x = 0; x < contentControls.items.length; x++) {
itemUrl = "https://*tenant*.sharepoint.com/sites/*site*/_api/web/Lists/GetByTitle('*list*')/items?select=Title,Title&$filter=Title eq '" + contentControls.items[x].title + "'";
$.ajax({
type: "GET",
async: false,
url: itemUrl,
headers: {
"Authorization": "Bearer " + sharepointToken,
"accept": "application/json;odata=verbose"
},
success: function (data) {

var sharepointDateTime = data.d.results[0].Modified;
var contentControlDateTime = contentControls.items[0].tag;

var test1 = new Date(sharepointDateTime);
var test2 = new Date(contentControlDateTime);

if (test1 != test2) {
// custom code
}
},
error: function (error) {
console.log("Fetching list from SharePoint failed.");
}
})
}

期望的结果

我希望能够比较条件语句中的两个日期,如果它们不同,我将在语句中执行某些操作。 非常重要这不能取决于用户当前的时区。我正在比较 UTC 时间

更新

我通过更改标记内容控件的 api 解决了这个问题。我的工作时间很紧,所以我无法过多地讨论这个问题。我看到的是内容控制标签没有标记时区,所以它是在比较苹果和橙子。但是,我想保留这个问题,看看是否有人可以找到客户端解决方案。

最佳答案

您正在使用 != 来比较两个日期对象的对象引用,而不是时间点。虽然对象可能代表同一时间点,但条件始终为真。

相反,您可以将两个日期的时间戳作为数值进行比较,您可以使用 valueOf() 检索该值。 :

test1.valueOf() != test2.valueOf()
<小时/>

另请注意,第二个日期不包含任何时区信息,因此它 will be interpreted in the local time zone of the environment the code is executed in 。这可能会导致意想不到的结果。

您可能想要look into Moment.js ,它是 JavaScript 中日期处理的事实标准库,并提供 much more consistent and intuitive API适合您的用例。

关于javascript - 不同格式的日期时间的转换和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com