【问题标题】:convert Java datestring to javascript date [duplicate]将Java日期字符串转换为javascript日期[重复]
【发布时间】:2026-01-29 03:00:02
【问题描述】:

当我通过 JSON 将日期从 Java 发送到 Javascript 时,它会发送如下内容:

var ds = "11:07:47 13/01/2011";

Javascript 无法将此字符串解析为日期

var d = new Date(ds);

有什么想法吗?

【问题讨论】:

  • 这个是 2011 年 1 月问的,复制链接是 2011 年 4 月,这怎么可能是重复的?
  • “重复”因不清楚询问的内容而关闭。是时候重新提出这个问题了。

标签: javascript string json date


【解决方案1】:

你需要一些 JS 来解析字符串并返回字符串中的年、月、日、分钟、小时、秒:

var hour = ds.split(":")[0],
    minute = ds.split(":")[1],
    last_part = ds.split(":")[2],
    second = second_part.split(" ")[0],
    last_part2 = second_part.split(" ")[1],
    day = last_part2.split("/")[0],
    month =  last_part2.split("/")[1],
    year =  last_part2.split("/")[2];

然后实例化 Date 构造函数:

var d = new Date ( year, month, day, hour, minute, second );

【讨论】:

  • 第3行应该是second = ds.split(":")[2],,删除第4行,第5行应该是last_part2 = ds.split(" ")[1],。您可以重命名 last_part2,因为它不再是第二个了。
  • 感谢您编写代码,它就像一个魅力!
  • 另一种方法是使用moment.js 获取Date 对象:var d = moment(ds, "HH:mm:ss DD/MM/YYYY").asDate(); 第二个字符串是用于解析输入日期字符串的格式。
【解决方案2】:

为了安全起见,您应该在 Java 中获取以毫秒为单位的时间,然后通过 JSON 将其发送到 JavaScript。在那里你可以使用

var d = new Date();
d.setTime(valueInMilliseconds);

【讨论】:

    【解决方案3】:

    您可以通过多种方式调用Date 构造函数。
    来自http://www.w3schools.com/js/js_obj_date.asp的参考:

    new Date() // current date and time
    new Date(milliseconds) //milliseconds since 1970/01/01
    new Date(dateString)
    new Date(year, month, day, hours, minutes, seconds, milliseconds)
    

    【讨论】:

      【解决方案4】:
      function stringToDate(_date,_format,_delimiter)
      {
              var formatLowerCase=_format.toLowerCase();
              var formatItems=formatLowerCase.split(_delimiter);
              var dateItems=_date.split(_delimiter);
              var monthIndex=formatItems.indexOf("mm");
              var dayIndex=formatItems.indexOf("dd");
              var yearIndex=formatItems.indexOf("yyyy");
              var month=parseInt(dateItems[monthIndex]);
              month-=1;
              var formatedDate = new Date(dateItems[yearIndex],month,dateItems[dayIndex]);
              return formatedDate;
      }
      
      stringToDate("17/9/2014","dd/MM/yyyy","/");
      stringToDate("9/17/2014","mm/dd/yyyy","/")
      stringToDate("9-17-2014","mm-dd-yyyy","-")
      

      【讨论】: