使用jQuery转换DateTime URL参数

时间:2015-09-23 14:50:16

标签: javascript jquery datetime

我有一个网页,它将UTC中的当前日期和时间作为参数传递到我的网页:

Example: https://test.com/SentValues.html?dtype=9/23/2015+2:15:16+PM&ltype=http://abc.xyz/test.html

如何在jQuery中将其转换为日期时间值?我似乎无法让这个工作。目前,DateSent变量存储9/23/2015 + 2015 + 2:15:16 + PM。我似乎无法将其转换为日期时间。

jQuery(function ($) {

    var DateSent = decodeURIComponent(GetURLParameter('dtype'));
    var WebSite = GetURLParameter('ltype');
    var PassedDT = new Date(DateSent);
    var MinCurrentDT = new Date($.now());
    var MaxCurrentDT = new Date($.now());

    MinCurrentDT.setMinutes(MinCurrentDT.getMinutes() - 5);
    MaxCurrentDT.setMinutes(MaxCurrentDT.getMinutes() + 5);

    if (PassedDT >= MinCurrentDT && PassedDT <= MaxCurrentDT) {
         alert('Inside range.');
    }
    else {
        alert('Outside range.');
    }       

});

2 个答案:

答案 0 :(得分:1)

“+”不以decodeURIComponent可以处理的方式编码。它期望空格表示为%20。通过手动将空格替换为“+”,它将生成一个有效的日期对象。

///////// Encoded with +

var url = "https://test.com/SentValues.html?dtype=9/23/2015+2:15:16+PM&ltype=http://abc.xyz/test.html";

// Extract dtype from URL
var dtype = url.split("dtype=");
dtype = dtype.length > 0 ? dtype[1] : "";
dtype = decodeURIComponent(dtype.split("&")[0]);
dtype = dtype.replace(/\+/g, " "); // Replace "+" with spaces

document.getElementById("plusresult").innerHTML = new Date(dtype);

///////// Encoded with %20

url = "https://test.com/SentValues.html?dtype=9/23/2015%202:15:16%20PM&ltype=http://abc.xyz/test.html";

// Extract dtype from URL
dtype = url.split("dtype=");
dtype = dtype.length > 0 ? dtype[1] : "";
dtype = decodeURIComponent(dtype.split("&")[0]);
// No replacement necessary

document.getElementById("encoderesult").innerHTML = new Date(dtype);
<p>Result for URL with "+": <span id="plusresult"></span></p>
<p>Result for URL with "%20": <span id="encoderesult"></span></p>

答案 1 :(得分:0)

您是否考虑过使用momentjs? 我在此fiddle中使用了一个示例,但您可以在此处查看其他方法:http://momentjs.com/docs/

moment(MaxCurrentDT).format('HH:mm:ss DD-MM-YYYY')
//output: 14:07:35 23-09-2015