2016-12-29 4 views
2

Этот вопрос уже задан сегодня, но владелец, кажется, удалил его (даже у него есть 4 голоса). Однако вопрос был настолько интересным, что я решил снова написать себя.Как определить формат даты из строки?

У меня есть объект в Javascript, который имеет одно свойство с строкой даты.

Теперь я хочу установить новое datetime для этого свойства, но как я могу установить новые данные, не зная его формата?

Образец даты и времени выглядит следующим образом "2018-01-01T20: 09: 00"

Этот вопрос можно разделить на 2 ответа.

  1. Определить текущий упомянутый формат & установить один и тот же формат, свойство объекта. (Это, кажется, достигается легко, если кто-то сказать, какой тип формата даты и времени это)

  2. определить некоторые общие решения, определить какой-либо формат даты и времени & преобразовать заданное datetime для установки свойства объекта.

+0

Простым решением может быть использование библиотеки даты/времени, такой как [moment.js] (http://momentjs.com/docs/#/parsing/) – dloeda

+1

Вы не можете, по крайней мере, надежно. Является ли '1/2/2016' 2 января или 1 февраля? –

+0

кажется, что вы, ребята, не очень хорошо понимаете необходимость, –

ответ

2
var dat = new Date('2018-01-01T20:09:00'); 
console.log(dat.getFullYear()); 
console.log(dat.getUTCHours()); 
console.log(dat.getUTCMinutes()); 
1

Если вы можете использовать moment.js то следующее делает работу:

var dateFormats = { 
    "iso_int" : "YYYY-MM-DD", 
    "short_date" : "DD/MM/YYYY", 
    "iso_date_time": "YYYY-MM-DDTHH:MM:SS", 
    "iso_date_time_utc": "YYYY-MM-DDTHH:MM:SSZ" 
    //define other well known formats if you want 
} 

function getFormat(d){ 
    for (var prop in dateFormats) { 
     if(moment(d, dateFormats[prop],true).isValid()){ 
      return dateFormats[prop]; 
     } 
    } 
    return null; 
} 

var dateInput = "2018-01-01T20:09:00"; 

var formatFound = getFormat(dateInput); //returns "YYYY-MM-DDTHH:MM:SS" 
if(formatFound !==null){ 
    //do stuff 
} 

Проверить the moment js docs для получения дополнительной информации о поддерживаемых dateFormats по умолчанию и заполнить ваш dateFormats объект с ними.

+0

'moment ('01 -01-2001 ',' YYYY-MM-DD ') .isValid() 'вернет true. Moment сделает все возможное, чтобы проанализировать дату и может дать непредсказуемые результаты. – user2468170

Смежные вопросы