如何转换" /日期(-23788800000)/"到目前为止" 1969/04/01 00:00:00"

时间:2014-04-21 04:06:19

标签: json date

我目前的转换方法如下:

function FormatDate(date, fmt) {
    var d = date;
    if (!d) return "";
    if ((Object.prototype.toString.call(d).match(/object\s(\w+)/)[1]).toLowerCase() != "date") {
        d = d.toString();
        var reg = /(Date\(\d+\))/ig;
        eval($.format("d = new {0};", d.match(reg)));
    }
    fmt = (fmt == null) ? "MM/dd/yyyy hh:mm:ss" : fmt;
    return fmt.replace("yyyy", PadStr(d.getFullYear(), 4, "0"))
              .replace("MM", PadStr(d.getMonth() + 1, 2, "0"))
              .replace("yy", PadStr(d.getYear() + 1, 2, "0"))
              .replace("dd", PadStr(d.getDate(), 2, "0"))
              .replace("hh", PadStr(d.getHours(), 2, "0"))
              .replace("mm", PadStr(d.getMinutes(), 2, "0"))
              .replace("ss", PadStr(d.getSeconds(), 2, "0"))
              .replace("{", "")
              .replace("}", "");
}

我想将/ Date(-23788800000)/转换为像'1969/04/01'这样的字符串,  谁能给我一些建议?

1 个答案:

答案 0 :(得分:0)

让我们考虑使用JSON序列化返回日期的ASP.NET控制器操作:

public ActionResult GetDate()
{
    return Json(DateTime.Now, JsonRequestBehavior.AllowGet);
}

正如您所知,JSON序列化将返回一个字符串,如:"\/Date(1398106878581)\/"

给出的数字是以毫秒为单位的日期。在JavaScript中解析它的一种简单方法是var milliseconds = +json.match(/\d+/);。你可以把它扔进一个Date构造函数然后离开。

这是完整的JS代码,它将使用我们上面写的GetDate()动作:

var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        formatDate(xmlHttp.responseText);
    }
}
xmlHttp.open('GET', '/Home/GetDate', true);
xmlHttp.send(null);

var formatDate = function(json) {
    var milliseconds = +json.match(/\d+/);
    var date = new Date(milliseconds);

    var fmt = "MM/dd/yyyy hh:mm:ss";
    var formatted = fmt.replace("yyyy", date.getFullYear())
              .replace("MM", date.getMonth() + 1)
              .replace("yy", date.getYear() + 1)
              .replace("dd", date.getDate())
              .replace("hh", date.getHours())
              .replace("mm", date.getMinutes())
              .replace("ss", date.getSeconds())
              .replace("{", "")
              .replace("}", "");
    return formatted;
}