【问题标题】:formatting json date in javascript template在javascript模板中格式化json日期
【发布时间】:2014-03-23 16:44:41
【问题描述】:

我的控制器使用 JSON 将日期数据发送到视图。在视图中,我将这些数据发送到 jQuery 模板进行显示。我的问题是日期,因为我得到这个值就像

"/Date(1245398693390)/"

所以我尝试使用this solution,但使用 FireBug 我可以看到在行中抛出了一个错误

var value = new Date(parseInt(jsonDate.substr(6)));

有错误

jsonDate.substr is not a function

如果它很重要,我会尝试使用 jQuery mobile 来实现它。

更新

<script id="myDataTemplate" type="text/html">          
    <li>@Html.ActionLink("${GetDateString(Date)}", "Fetch", "Data")</li>            
</script>

这是布局视图中注入的js函数

<script>
            function getDateString(jsonDate) {
                if (jsonDate == undefined) {
                    return "";
                }
                var utcTime = parseInt(jsonDate.substr(6));

                var date = new Date(utcTime);
                var minutesOffset = date.getTimezoneOffset();

                return date.addMinutes(minutesOffset).toString("M/d/yyyy h:mm tt");
            }
        </script>

更新 2 这是我最初使用的js函数

function GetDate(jsonDate) {
  var value = new Date(parseInt(jsonDate.substr(6))); //breaks
  return value.getMonth() + 1 + "/" + value.getDate() + "/" + value.getFullYear();
}

【问题讨论】:

  • 你得到的实际上是javascript代码,而不是json。这意味着如果您执行该代码,它将生成一个新的 Date 对象,该对象从自 unix 纪元日期以来的 #milliseconds 开始。换句话说,您需要将该值视为 JSONP。
  • @Kristian 感谢您抽出宝贵时间。问题已更新。您能否通过具体示例添加解决方案。
  • 所以,当您控制台输出 jsonDate 变量时,您会得到 "/Date(1245398693390)/"?
  • 我刚刚发布了最初使用的js函数。它在 var value = ... 行上中断。当然我用过@Html.ActionLink("${GetDate(Date)}"...
  • 是的,这是因为 jsonDate 的值不是正确的字符串。因此函数substr 不可用。因此,为了继续调试它,您需要在断线之前在该函数内抛出一个console.log,以准确识别 jsonDate 的值是什么,并确保它实际上是一个字符串。

标签: javascript jquery json jquery-mobile


【解决方案1】:

工作测试

   var aa = "/Date(1245398693390/".match(/\d+/); 

   var bb = parseInt(aa);

   var date = new Date(bb);

   alert(date);

【讨论】:

  • :))) 我想是时候注册了,我从来没有使用过。干杯
猜你喜欢
  • 2016-03-23
  • 1970-01-01
  • 2016-12-09
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多