将字符串转换为datetime

Dam*_*mir 37 javascript string datetime date type-conversion

如何将字符串转换'01-01-1970 00:03:44'为datetime?

Luk*_*uke 63

保持简单new Date(string).这应该做到......

var s = '01-01-1970 00:03:44';
var d = new Date(s);
console.log(d); // ---> Thu Jan 01 1970 00:03:44 GMT-0500 (Eastern Standard Time)
Run Code Online (Sandbox Code Playgroud)

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

  • 为什么这不是选择的答案?这可能是最直观的答案. (5认同)
  • 不要使用此方法。日期时间格式是特定于浏览器的。来自 [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date):“注意:使用 `Date` 构造函数(和 `由于浏览器差异和不一致,强烈建议不要使用 Date.parse()`(其工作方式相同)。” (2认同)

Koo*_*Inc 10

对于这种格式(假设datepart的格式为dd-mm-yyyy)在普通的javascript使用中dateString2Date.

[ 编辑 ]添加了ES6实用程序方法,使用格式字符串参数(format)解析日期字符串,以通知方法输入字符串中日期/月/年的位置.

var result = document.querySelector('#result');

result.textContent = 
  `*Fixed\ndateString2Date('01-01-2016 00:03:44'):\n => ${
    dateString2Date('01-01-2016 00:03:44')}`;

result.textContent += 
  `\n\n*With formatting\ntryParseDateFromString('01-01-2016 00:03:44', 'dmy'):\n => ${
  tryParseDateFromString('01-01-2016 00:03:44', "dmy").toUTCString()}`;

result.textContent += 
  `\n\nWith formatting\ntryParseDateFromString('03/01/2016', 'mdy'):\n => ${
  tryParseDateFromString('03/01/1943', "mdy").toUTCString()}`;

// fixed format dd-mm-yyyy
function dateString2Date(dateString) {
  var dt  = dateString.split(/\-|\s/);
  return new Date(dt.slice(0,3).reverse().join('-') + ' ' + dt[3]);
}

// multiple formats (e.g. yyyy/mm/dd or mm-dd-yyyy etc.)
function tryParseDateFromString(dateStringCandidateValue, format = "ymd") {
  if (!dateStringCandidateValue) { return null; }
  let mapFormat = format
          .split("")
          .reduce(function (a, b, i) { a[b] = i; return a;}, {});
  const dateStr2Array = dateStringCandidateValue.split(/[ :\-\/]/g);
  const datePart = dateStr2Array.slice(0, 3);
  let datePartFormatted = [
          +datePart[mapFormat.y],
          +datePart[mapFormat.m]-1,
          +datePart[mapFormat.d] ];
  if (dateStr2Array.length > 3) {
      dateStr2Array.slice(3).forEach(t => datePartFormatted.push(+t));
  }
  // test date validity according to given [format]
  const dateTrial = new Date(Date.UTC.apply(null, datePartFormatted));
  return dateTrial && dateTrial.getFullYear() === datePartFormatted[0] &&
         dateTrial.getMonth() === datePartFormatted[1] &&
         dateTrial.getDate() === datePartFormatted[2]
            ? dateTrial :
            null;
}
Run Code Online (Sandbox Code Playgroud)
<pre id="result"></pre>
Run Code Online (Sandbox Code Playgroud)


Rhy*_*ury 7

您可以使用moment.js库。

然后简单地:

var stringDate = '01-01-1970 00:03:44';
var momentDateObj = moment(stringDate);
Run Code Online (Sandbox Code Playgroud)

也检查他们的 api,有助于格式化、添加、减去(天、月、年、其他时刻对象)。

我希望这有帮助。

里斯


Mic*_*ake 6

http://www.w3schools.com/jsref/jsref_parse.asp

<script type ="text/javascript">

var d = Date.parse("2005年7月8日");
文件撰写(d);

</ script>