如何将字符串转换为JavaScript日期对象?

var st = "date in some format"
var dt = new Date();

var dt_st = // st in Date format, same as dt.

当前回答

作为这里所解释的内容的一个插件,您可以使用new Date()创建日期,并使用非常有用的toLocaleDateString()函数对其进行格式化

一个例子:

console.log(new Date('1970-01-01').toLocaleDateString('es-ES')) //——>输出'1/1/1970'

其他回答

还有一种方法是在格式字符串上构建一个带有命名捕获组的正则表达式,然后使用该正则表达式从日期字符串中提取日、月和年:

function parseDate(dateStr, format) { const regex = format.toLocaleLowerCase() .replace(/\bd+\b/, '(?<day>\\d+)') .replace(/\bm+\b/, '(?<month>\\d+)') .replace(/\by+\b/, '(?<year>\\d+)') const parts = new RegExp(regex).exec(dateStr) || {}; const { year, month, day } = parts.groups || {}; return parts.length === 4 ? new Date(year, month-1, day) : undefined; } const printDate = x => console.log(x ? x.toLocaleDateString() : x); printDate(parseDate('05/11/1896', 'dd/mm/YYYY')); printDate(parseDate('07-12-2000', 'dd-mm-yy')); printDate(parseDate('07:12:2000', 'dd:mm:yy')); printDate(parseDate('2017/6/3', 'yy/MM/dd')); printDate(parseDate('2017-6-15', 'y-m-d')); printDate(parseDate('2015 6 25', 'y m d')); printDate(parseDate('2015625', 'y m d')); // bad format

字符串解析的最佳字符串格式是ISO日期格式和JavaScript date对象构造函数。

ISO格式的例子:YYYY-MM-DD或YYYY-MM-DDTHH:MM:SS。

但是等等!仅仅使用“ISO格式”本身并不能可靠地工作。字符串有时解析为UTC,有时解析为localtime(基于浏览器供应商和版本)。最佳实践应该始终是将日期存储为UTC,并以UTC进行计算。

要将日期解析为UTC,请添加Z -例如:new date ('2011-04-11T10:20:30Z')。

使用.toUTCString()显示UTC日期, 使用. tostring()以用户的本地时间显示日期。

关于MDN |日期和这个答案的更多信息。

对于旧的Internet Explorer兼容性(小于9的IE版本在日期构造函数中不支持ISO格式),您应该将日期时间字符串表示拆分为部分,然后您可以使用使用日期时间部分的构造函数,例如:new Date('2011', '04' - 1, '11', '11', '51', '00')。注意,月份的数字必须小于1。


替代方法-使用适当的库:

您还可以利用Moment.js库,该库允许使用指定的时区解析日期。

你还可以: mydate.toLocaleDateString ();

我写了一个可重用的函数,当我从服务器获取日期字符串时使用。 您可以传递所需的分隔符(/ -等),用于分隔日、月和年,以便使用split()方法。 您可以在这个工作示例中看到并测试它。

<!DOCTYPE html>
<html>
  <head>
    <style>
    </style>
  </head>
  <body>
    <div>
      <span>day:
      </span> 
      <span id='day'>
      </span>
    </div>
    <div>
      <span>month:
      </span> 
      <span id='month'>
      </span>
    </div>
    <div>
      <span>year:
      </span> 
      <span id='year'>
      </span>
    </div>
    <br/>
    <input type="button" id="" value="convert" onClick="convert('/','28/10/1980')"/>
    <span>28/10/1980
    </span>
    <script>
      function convert(delimiter,dateString)
      {
        var splitted = dateString.split('/');
        // create a new date from the splitted string 
        var myDate = new Date(splitted[2],splitted[1],splitted[0]);
        // now you can access the Date and use its methods 
        document.getElementById('day').innerHTML = myDate.getDate();
        document.getElementById('month').innerHTML = myDate.getMonth();
        document.getElementById('year').innerHTML = myDate.getFullYear();
      }
    </script>
  </body>
</html>
                //little bit of code for Converting dates 

                var dat1 = document.getElementById('inputDate').value;
                var date1 = new Date(dat1)//converts string to date object
                alert(date1);
                var dat2 = document.getElementById('inputFinishDate').value;
                var date2 = new Date(dat2)
                alert(date2);