【问题标题】:Is there a built-in function or plugin to handle date formatting in JavaScript?是否有内置函数或插件来处理 JavaScript 中的日期格式?
【发布时间】:2012-09-19 20:59:23
【问题描述】:

目前我需要以“2012 年 10 月 5 日”类型格式输出日期。表示没有前导零、空格、完整月份名称、逗号、空格、四位数年份的月份日期。我需要在 JavaScript 中执行此操作。我有这个工作,但我在编写冗长的代码时突然想到有人一定已经找到了更好的方法。

我不认为有一个内置的 JavaScript 函数可以完全按照我想要的方式格式化它。在 PHP 中只有一个东西是 date()。有没有 JavaScript 插件可以做同样的事情?

为了给出一个具体的例子,在这个例子中,我从需要获取日期的未来几个小时开始。

目前我有:

    var myNow = new Date().getTime();
    var myTime = hours * 60 * 60 * 1000;
    var myDate = new Date(myTime + myNow);
    var myDay = myDate.getDate();
    var myMonthNum = myDate.getMonth();
    var myMonth = '';
    var myYear = myDate.getFullYear();

    switch(myMonthNum) {
        case 0:
            myMonth = 'January';
            break;
        ...

    var completeDate = myDate = " " + myMonth + ", " + myYear;
    $('#theEndDate').html(completeDate);

【问题讨论】:

  • DateJS :) datejs.com
  • DateJS 近 5 年没有更新了。我个人会使用 momentJS 但如果你做的事情这么简单,应该不需要加载当您的短代码完全符合您的要求时,外部库。
  • 既然您了解一些 PHP,请查看 phpjs.org 上的 php.js。这是他们的 JS 等价于 date():phpjs.org/functions/date:380 对于那些了解一些 PHP 并且难以在 JS 中找到类似函数的人来说,该站点是一个很好的资源。

标签: php javascript datetime date-formatting


【解决方案1】:

不,Dateobjects 没有内置任何内容,但是有一堆库可以处理和格式化它们:

【讨论】:

【解决方案2】:

您有一些可以清理的无关代码:

var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
    today = new Date(),
    completeDate = today.getDate() + " " + months[today.getMonth()] + ", " + today.getFullYear();

$('#theEndDate').html(completeDate);

使用库并不总是答案,特别是如果您只打算在一个地方使用它。

【讨论】:

    【解决方案3】:

    有很多日期库,但如果您只想从日期对象生成一种特定格式,那就很简单了:

    var formatDate = (function() {
    
      var months = ['January','February','March','April','May','June',
          'July','August','September','October','November','December'];
    
      return function(date) {
        return date.getDate() + ' ' + months[date.getMonth()] + ', ' + date.getFullYear();
      }
    }());
    
    alert(formatDate(new Date())); // 28 September, 2012
    

    我认为不到 5 分钟。

    【讨论】:

    • 这显然是微不足道的。这从来都不是困难的问题,甚至不是处理那种特定情况的问题。每次需要任何日期处理时都必须全部列出来有点笨拙。
    • 一般情况下,每个应用程序只需要一种格式,编写函数非常简单,可以成为工具箱的一部分。与查找和评估日期库相比,您可能会花费更少的时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多