转换和比较不同格式的DateTime

时间:2016-09-01 15:28:42

标签: javascript datetime

目前我有一个应用程序正在对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解决了这个问题。我正在努力工作,所以我不能真正地关注这一点。我看到的是内容控制标签没有标记时区,因此它正在比较苹果和橙子。但是,我想打开这个问题,看看是否有人可以找到客户端解决方案。

1 个答案:

答案 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