【问题标题】:unable to parse date with timestamp format in jqgrid无法在 jqgrid 中使用时间戳格式解析日期
【发布时间】:2019-03-13 08:45:54
【问题描述】:

我将日期对象作为 JSON 字符串获取,如下所示。 2019-03-12T02:39:38.197+0000 正如我在 Jqgrid 中尝试了所有可能的格式选项一样,没有给出确切的时间。所以我使用了自己的格式化程序。

 function dateFormatter (cellvalue, options, rowObject)
  {
    var new_format_value='';
    var date = new Date(cellvalue);
     var hours = date.getHours();
      var minutes = date.getMinutes();
      var ampm = Number(hours) >= 12 ? 'PM' : 'AM';
      hours = Number(hours) % 12;
      hours = hours ? hours : 12; // the hour '0' should be '12'
      minutes = Number(minutes) < 10 ? '0'+ Number(minutes) : Number(minutes);
      var strTime = hours + ':' + minutes + ' ' + ampm;
      new_format_value=Number(date.getMonth())+1 + "/" + date.getDate() + "/" + date.getFullYear() + " " + strTime
      return new_format_value;
   }

这种方式以某种方式完全按预期工作,但是当他们在IE10, IE11 中访问时,我在控制台中收到Invalid date 错误。

有人可以帮帮我吗?

【问题讨论】:

  • 为什么你使用自定义格式化程序而不是使用预定义的formatter: "date"?您能否在 jsfiddle 中提供 demo 来重现问题?您的代码的哪一行产生错误“无效日期”消息?我想是var date = new Date(cellvalue);。我猜您的某些输入数据不能用作Date 的参数,您必须先包含一些额外的测试。我认为最好的选择是将formatter: "date"formatoptions中对应的srcformatnewformat一起使用。

标签: javascript date jqgrid


【解决方案1】:

您可以使用 momentjs 并使用自定义格式设置日期

更多格式https://devhints.io/datetime

var date = moment('2019-03-12T02:39:38.197+0000');
console.log(date.format('MM-DD-YYYY hh:mm A'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【讨论】:

  • 不添加外部库我们还有其他方法吗? 2019-03-12T02:39:38.197+0000这种格式不是javascript ??
  • 无论如何你的脚本导致错误的日期它应该是10:39 AM
  • Date 只能识别特定格式,并且您无法告诉它您的输入格式是什么,您必须为您的值解析字符串。 momentjs 是非常流行的处理日期值的库
  • 使用哪个版本的jqGrid?
  • @TonyTomov 4.15.5你觉得jqGrid版本有问题吗?
猜你喜欢
  • 2014-10-12
  • 2012-05-05
  • 1970-01-01
  • 2021-11-23
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
相关资源
最近更新 更多