【问题标题】:Convert UTC Date to dd/mm/yyyy Format将 UTC 日期转换为 dd/mm/yyyy 格式
【发布时间】:2014-03-27 12:53:18
【问题描述】:

尝试在 JavaScript 中将 UTC 日期格式转换为 dd/mm/yyyy 时遇到一些困难:

var launchDate = attributes["launch_date"];
if (isBuffering) {
         var date = new Date(launchDate);
         var d = new Date(date.toLocaleDateString());
         launchDate = ((d.getUTCMonth() + 1) + "/" + (d.getUTCDate() + 1) + "/" + (d.getUTCFullYear()));
 } 

我试过这个,但它返回一个无效的日期。于是我改成了这样:

var launchDate = attributes["launch_date"];
if (isBuffering) {
         var date = new Date(launchDate);
         var d = formatDate(new Date(date.toLocaleDateString()));
         launchDate = ((d.getUTCMonth() + 1) + "/" + (d.getUTCDate() + 1) + "/" + (d.getUTCFullYear()));
 }

但是,它仍然返回无效日期。我想知道有没有办法将 2013 年 5 月 31 日星期五 17:41:01 GMT+0200 (CEST) 的日期格式更改为 dd/mm/yyyy?

提前致谢。

【问题讨论】:

  • Javascript 原生识别的日期格式只有这么多。如果您需要一种不在其中的特定格式,您可能必须参与一些自定义对象,这些对象将“内部”转换为/从您需要的格式转换为 Javascript 本机识别的格式。以前走过这条路,可能会非常棘手并且容易地雷:)

标签: javascript date


【解决方案1】:
var d = new Date();
var n = d.toLocaleDateString();

这在build JS方法中会更优越!

【讨论】:

    【解决方案2】:
    function formatDate(d)
     {
      date = new Date(d)
      var dd = date.getDate(); 
      var mm = date.getMonth()+1;
      var yyyy = date.getFullYear(); 
      if(dd<10){dd='0'+dd} 
      if(mm<10){mm='0'+mm};
      return d = dd+'/'+mm+'/'+yyyy
    }
    

    【讨论】:

    • 但是 getDate() 不是获取当前日期吗?还是获取传入参数的日期?
    • 它不适用于同一日期,比如 2008 年 3 月 27 日。但它适用于 2008 年 5 月 26 日。
    • @radia 如何在javascript中将“Month dd, yyyy”转换为“MM/dd/yyyy”?
    【解决方案3】:

    月是 0 索引,但天不是。您无需在一天中添加 1。

    此外,您将其格式化为 MM/dd/yyyy,而不是 dd/MM/yyyy。

    解决方案:

    var launchDate = attributes["launch_date"];
    if (isBuffering) {
             var date = new Date(launchDate);
             var d = formatDate(new Date(date.toLocaleDateString()));
             launchDate = ((d.getUTCDate())+ "/" + (d.getUTCMonth() + 1)  "/" + (d.getUTCFullYear()));
     }
    

    【讨论】:

    • 即使我切换了日期和月份,它仍然返回无效日期
    • 返回“无效日期”的哪一行?你能用调试器告诉我们它在哪里说的吗?您的启动日期可能格式不正确,无法被 new Date() 解析。
    • 我使用了浏览器的调试器,它只是告诉我它是无效的日期,但有传入的值,只是 toLocaleDateString() 不知何故导致了错误。
    • 使用断点单步执行代码(IE 中的红色圆球,Chrome 中的灰色箭头)并将鼠标悬停在启动日期和日期上,以查看它是否可以正常处理。我认为 new Date() 无法处理启动日期的格式。检查启动日期中的内容,然后检查日期中的内容。我认为这行出错了,你必须传递一个 new Date() 可以处理的日期。
    • 当我将日期解析为 Date 时,它​​采用毫秒格式。但是当它到达 toLocaleDateString() 行时,它变成了无效的日期。我相信问题出在那儿。
    【解决方案4】:

    试试看:

    Date.parseExact(Your_Date, 'dd/MM/yyyy').toString('MM/dd/yyyy');
    

    Date.parseExact(Your_Date, 'MM/dd/yyyy').toString('dd/MM/yyyy');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2012-03-05
      相关资源
      最近更新 更多