目前我有一个应用程序正在对SharePoint api进行休息调用,它给了我最后修改日期,然后我将该日期与我当前在word doc中作为内容控件中的标记存储的日期进行比较。目前我使用New Date()
方法尝试比较两个日期,但是我有两个不同的时间。这两个日期时间都是UTC格式,但格式不同。
我从SharePoint获取的DateTime采用以下格式:2016-08-27T17:40:09Z
DateTime存储在内容控制标记中: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解决了这个问题。我正在努力工作,所以我不能真正地关注这一点。我看到的是内容控制标签没有标记时区,因此它正在比较苹果和橙子。但是,我想打开这个问题,看看是否有人可以找到客户端解决方案。
答案 0 :(得分:1)
您正在使用!=
比较两个日期对象的对象引用,而不是时间点。虽然对象可能代表相同的时间点,但条件总是如此。
相反,您可以将两个日期的时间戳作为数字值进行比较,您可以使用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。