0

在淘汰赛虚拟机中,我试图将日期时间注入属性。该函数生成正确的日期,但是当它在 UI 中呈现时,我得到一个 12-31-1969 晚上 7 点的日期。此项目没有被序列化,并且正在动态生成。有人可以帮我理解为什么会产生这种情况以及如何纠正它。我看过很多关于这出现在 php 代码中的文章,但没有特定于淘汰赛的文章。有一篇关于 SO 的文章引用了 dateTimePicker,但我没有立即看到 OP 的问题与我的问题之间的相似之处。

在我的 js 文件中

function returnDateFormat() {

    var d = new Date();

    date = d.getDate();
    date = date < 10 ? "0" + date : date;

    mon = d.getMonth() + 1;
    mon = mon < 10 ? "0" + mon : mon;

    year = d.getFullYear();

    hours = d.getHours();

    min = d.getMinutes();

    sec = d.getSeconds();

    return (mon + "/" + date + "/" + year + " " + hours + ":" + min + ":" + sec);
}

在我的 ajax 调用成功时引用了该函数。基本上我只是想更新虚拟机以显示事件发生的日期。当页面初始化时,它会被加载并绑定在 UI 中,所以我知道在下一次加载时,正确的值会从数据库中提取并填充。如果我不需要的话,我只是不想从通话中返回整个日期集。

$.ajax({
       type: "POST",
       url: "warehouse/" + command,
       data: "{ productId:'" + product.ProductId() + "', newname: '" + newname + "' }",
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       success: function (msg) {
       if (msg.Key == true) {
         DisplaySuccess("Update Complete.", "The product has been successfully updated.");
          //update product name in VM
          product.Name(newname);
          product.DateLastModified(returnDateFormat());
        }
        else {
        //Display error message if ajax msg fails
          DisplayError("Error Renaming Product ", msg.Value);
        }

       }, error: function (err) {
        DisplayError("Error Renaming Product", "The server returned an error code. Code: " + err.status);
     }
   });

然后在 cshtml 文件中,我将日期修改元素绑定到 div 元素

 <div title="Product Last Modified" class="productDetailItem scalableText productModified" data-bind="text: FormatDate(DateLastModified())"></div>

更新:在进一步调查中,原始日期作为 Json 序列化字符串传入,这是 cshtml 函数调用 FormatDate 地址的内容。它解析并格式化 Json 字符串。我当时没有意识到这一点,因为我没有写这部分映射。

它中断的原因是我传入了格式化的日期时间,而不是函数预期的 Json 序列化字符串。为了纠正这个问题,我计划在客户端生成一个日期时间,然后对其进行序列化,将其传递给函数,这应该可以解决问题。我将很快发布一个可行的解决方案。我欢迎其他建议。-干杯

4

1 回答 1

1

我认为您只想这样做:

<div title="Product Last Modified" class="productDetailItem scalableText productModified" data-bind="text: DateLastModified"></div>

DateLastModified 已经格式化了,为什么要再次格式化呢?作为旁注,我强烈建议您查看moment.js。您可以将整个“returnDateFormat”函数替换为:

product.DateLastModified(moment().format("MM/DD/YYYY hh:mm:ss a"));
// "09/05/2013 11:22:40 am"
于 2013-09-05T18:22:15.753 回答