Преобразовать строку в дату и время - PullRequest
34 голосов
/ 01 апреля 2011

Как преобразовать строку типа '01-01-1970 00:03:44' в дату и время?

Ответы [ 9 ]

55 голосов
/ 09 июля 2014

Не усложняйте с помощью 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)

Ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

10 голосов
/ 01 апреля 2011

Для этого формата (при условии, что datepart имеет формат dd-mm-yyyy) в простом использовании javascript dateString2Date.

[ Edit ] Добавлен служебный метод 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;
}
6 голосов
/ 01 апреля 2011

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



var d = Date.parse ("8 июля 2005");
документ.write (d);

4 голосов
/ 11 мая 2016

Вы можете использовать библиотеку moment.js .

Тогда просто:

var stringDate = '01-01-1970 00:03:44';
var momentDateObj = moment(stringDate);

Также проверьте их API, помогает с форматированием, добавлением, вычитанием (дни, месяцы, годы, другие объекты момента).

Надеюсь, это поможет.

Рис

2 голосов
/ 10 декабря 2013
formatDateTime(sDate,FormatType) {
    var lDate = new Date(sDate)

    var month=new Array(12);
    month[0]="January";
    month[1]="February";
    month[2]="March";
    month[3]="April";
    month[4]="May";
    month[5]="June";
    month[6]="July";
    month[7]="August";
    month[8]="September";
    month[9]="October";
    month[10]="November";
    month[11]="December";

    var weekday=new Array(7);
    weekday[0]="Sunday";
    weekday[1]="Monday";
    weekday[2]="Tuesday";
    weekday[3]="Wednesday";
    weekday[4]="Thursday";
    weekday[5]="Friday";
    weekday[6]="Saturday";

    var hh = lDate.getHours() < 10 ? '0' + 
        lDate.getHours() : lDate.getHours();
    var mi = lDate.getMinutes() < 10 ? '0' + 
        lDate.getMinutes() : lDate.getMinutes();
    var ss = lDate.getSeconds() < 10 ? '0' + 
        lDate.getSeconds() : lDate.getSeconds();

    var d = lDate.getDate();
    var dd = d < 10 ? '0' + d : d;
    var yyyy = lDate.getFullYear();
    var mon = eval(lDate.getMonth()+1);
    var mm = (mon<10?'0'+mon:mon);
    var monthName=month[lDate.getMonth()];
    var weekdayName=weekday[lDate.getDay()];

    if(FormatType==1) {
       return mm+'/'+dd+'/'+yyyy+' '+hh+':'+mi;
    } else if(FormatType==2) {
       return weekdayName+', '+monthName+' '+ 
            dd +', ' + yyyy;
    } else if(FormatType==3) {
       return mm+'/'+dd+'/'+yyyy; 
    } else if(FormatType==4) {
       var dd1 = lDate.getDate();    
       return dd1+'-'+Left(monthName,3)+'-'+yyyy;    
    } else if(FormatType==5) {
        return mm+'/'+dd+'/'+yyyy+' '+hh+':'+mi+':'+ss;
    } else if(FormatType == 6) {
        return mon + '/' + d + '/' + yyyy + ' ' + 
            hh + ':' + mi + ':' + ss;
    } else if(FormatType == 7) {
        return  dd + '-' + monthName.substring(0,3) + 
            '-' + yyyy + ' ' + hh + ':' + mi + ':' + ss;
    }
}
1 голос
/ 29 января 2018

https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

var unixTimeZero = Date.parse('01 Jan 1970 00:00:00 GMT');
var javaScriptRelease = Date.parse('04 Dec 1995 00:12:00 GMT');

console.log(unixTimeZero);
// expected output: 0

console.log(javaScriptRelease);
// expected output: 818035920000
0 голосов
/ 15 июня 2019
your_date_string = '01-01-1970 00:03:44';
var date_with_date_fromat = new Date(your_date_string);
console.log(date_with_date_fromat);
0 голосов
/ 28 февраля 2017

Для этого формата (предполагаемая часть даты имеет формат dd-mm-yyyy) в простом javascript:

var dt  = '01-01-1970 00:03:44'.split(/\-|\s/)
    dat = new Date(dt.slice(0,3).reverse().join('/')+' '+dt[3]);
0 голосов
/ 01 апреля 2011

Нет никаких встроенных способов, вы можете попробовать что-то вроде это : см. Также этот вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...