如何使用jQuery/Javascript更改日期格式?

4
今天我想使用jQuery/Javascript将日期转换为不同的格式:
$date = '2013-04-01T19:45:11.000Z'
$cool = date('Y-m-d',strtotime($date));

我该如何在jQuery/Javascript(JS)中实现这个功能(PHP)?谢谢!

请查看此帖子:https://dev59.com/z3NA5IYBdhLWcg3wL6yx - fujy
在此处检查解决方案:https://dev59.com/aHjZa4cB1Zd3GeqPcU_h?answertab=oldest#tab-top - DropAndTrap
4个回答

6
使用JavaScript日期对象
<script>
  var date = new Date('2013-04-01T19:45:11.000Z');
  var day = date.getDate();
  var month = date.getMonth();
  var year = date.getFullYear();

  document.write(year + '-' + month + '-' + day);
</script>

1
值得注意的是,.getMonth返回的是基于零的月份版本(一月= 0,二月= 1,十二月= 11等)。如果您计划以这种方式返回正确的日期,则应该将一个月添加到月份中:var month = date.getMonth() + 1; - AndyD273

2
您需要将日期格式转换为JavaScript所需的格式,即:Sun, 01 Sep 13 08:06:57 +0000。因此,在PHP中,您需要执行以下操作:
date_default_timezone_set('Australia/Perth');
echo date('D, d M y H:i:s')." +0000";

你可以尝试使用jQuery来检查它。
$.get('dateformat.php', function(data) {
  date = new Date(data);
  console.log(date);  
});

然后您可以按照自己的方式格式化日期。 自定义日期对象格式的示例:
$.date = function(dateObj) {
    var d = new Date(dateObj);
    var day = d.getDate();
    var month = d.getMonth() + 1;
    var year = d.getFullYear();

    if (month < 10) {
        month = "0" + month;
    }
    return year + "." + month + "." + day;
};

一个 jQuery 插件,帮助您将日期格式化成类似于 PHP 的格式。

https://github.com/phstc/jquery-dateFormat

你可以使用它来应用这样的格式。
$.format.date("2009-12-18 10:54:50.546", "Test: dd/MM/yyyy")

我想那就是了。

你为什么说JavaScript需要那种格式呢?这并不是真的。JavaScript本身支持许多不同的日期格式。这里有一些例子 - Matt Johnson-Pint
Op 表示他想使用类似于“Y-m-d”的东西,所以我提到了一个插件,否则我会写一个如何手动完成的示例。 - Davit
@Dachi,我正在尝试使用jquery日期格式插件进行日期格式化,但没有成功。您能否给我一个示例,包括jsfiddle链接和https://github.com/phstc/jquery-dateFormat插件的使用方法? - Rajeev
@rajeevprasanna 很抱歉回复晚了。在这种情况下,MMM D @ hhp 是正确的方法。http://jsfiddle.net/dnatsvlishvili/JZLP3/1/ - Davit
1
@Dachi,感谢你的帮助。 - Rajeev
显示剩余2条评论

2

如果你的目标是新一代浏览器,那么你可以像fujy或LeGrande展示的那样直接在JavaScript中解析它。但是当你这样做时,请注意你传递的UTC日期将被转换为浏览器的本地时区。

如果你想要更多的灵活性和完全的浏览器兼容性,那么你应该使用一个类似moment.js的库。

// Parse it to a moment
var m = moment("2013-04-01T19:45:11.000Z");

// Format it in local time in whatever format you want
var s = m.format("YYYY-MM-DD  HH:mm:ss")

// Or treat it as UTC and then format it
var s = m.utc().format("YYYY-MM-DD  HH:mm:ss")

1
JavaScript聪明到足以接受不同格式的日期。
var d1 = new Date('2013-04-01T19:45:11.000Z');

2
大多数现代浏览器都是这样的。 - Matt Johnson-Pint

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接