如何使用 JavaScript/jQuery 格式化现有日期

新手上路,请多包涵

我正在尝试使用 JavaScript/jQuery 格式化日期时间,但它没有发生。我的代码如下。

 <div id="divID"></div>
    <script>
      var formatDate = function(date){
          return date.getDate() + "/" + date.getMonth() + "/" +date.getYear() + " "+  date.getHours() + ":" + date.getMinutes() + ":" + date.getMintutes() + ":" + date.getSeconds();
      }
      var timestamp="2016-12-16 07:58:30 AM ";
      var date= new Date(timestamp);
      document.getElementById('divID').innerHTML = formatDate(date);
    </script>

这里我有现有时间 2016-12-16 07:58:30 AM 我需要将它更改为 16-12-2016 07:58:30 AM 但在这里我无法获得正确的输出。

原文由 satya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 274
1 个回答

您的代码有几个问题:

  • 您有语法错误,您正在调用 getMintutes()
  • 您似乎试图两次显示分钟,因此您可以删除其中一个电话
  • getFullYear()getYear()
  • 您应该使用 - 而不是 / 来分隔日期值。
  • 您可以将 AMPM 添加到字符串的末尾,方法是检查 hours < 12
  • 您的时间戳字符串无效。它不应包含“AM”或“PM”——因此代码在 Firefox 中不起作用的原因。

考虑到这一点,试试这个:

 var formatDate = function(date) {
  return date.getDate() + "-" + date.getMonth() + "-" + date.getFullYear() + " " +  ('0' + date.getHours()).slice(-2) + ":" + ('0' + date.getMinutes()).slice(-2) + ":" + ('0' + date.getSeconds()).slice(-2) + ' ' + (date.getHours() < 12 ? 'AM' : 'PM');
}

var timestamp = "2016-12-16 07:58:30";
var date = new Date(timestamp);
document.getElementById('divID').innerHTML = formatDate(date);
 <div id="divID"></div>

您可以使用一个库来简化日期格式化逻辑,但是当单行代码工作正常时加载整个库是相当浪费的。

原文由 Rory McCrossan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏