2016-12-13 4 views
2

Пытается преобразовать строку в Javascript Date. Моя строка:преобразовать строку в Date Javascript

var fullDate = this.date + " " + this.time + ":00"; 

дает выход: 24/12/2016 02:00:00

но пытается преобразовать его в JS объект Date, как:

var k = new Date(fullDate); 

дает выход: Недействительный Дата

или даже: var k = Date.parse(fullDate);

дает выход: NaN

Любая помощь приветствуется.

Я следовал инструкции от http://www.datejs.com/ до сих пор

+1

Ваш формат даты/времени, вероятно, не соответствует вашему языку и не соответствует ISO ... он должен быть либо из этих. –

+0

Я не знаю, что говорит руководство на datejs.com, но попробуйте прочитать над этим надежную документацию (например, https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) и проверяя, какие форматы даты понимаются конструктором даты, на самом деле это не так много. Другие библиотеки, такие как MomentJS, могут анализировать даты в более широком разнообразии форматов. – ADyson

+0

Это хорошее резюме для этой проблемы на самом деле: http://stackoverflow.com/questions/3257460/new-date-is-working-in-chrome-but-not-firefox/3257513#3257513 – ADyson

ответ

1

Это происходит потому, что вы не обеспечивают правильный формат даты для new Date. Поэтому формат даты неверен. Формат даты по умолчанию в JavaScript - dd/mm/yyyy.

Дата должна быть как (mm/dd/yyyy):

12/24/2015

И тогда вы можете использовать var k = new Date(fullDate);

чистого яваскрипта решение для форматирования даты (без moment.js):

var fullDate = "24/12/2016 02:00:00"; 
fullDate = fullDate.split(' '); 

var date = fullDate[0].split(/\//); 
var time = fullDate[1]; 

var newDate = date[1] + '/' + date[0] + '/' + date[2] + ' ' + time; 
var k = new Date(newDate); 
3

Я только что написал ответ на этот вопрос. Here's my answer

В заключение необходимо сначала форматировать строку в стандартизованном формате, а затем вы можете использовать эту строку с новым методом Date (string). Эта работа для многих браузеров (IE9 +, Chrome и Firefox).

stringFormat = moment(dateObject).format("YYYY-MM-DDTHH:mm:ss"); 
date = new Date(stringFormat); 
4

Ваш формат недействителен. Действующий формат: month/day/year, поэтому попробуйте:

var fullDate = "12/24/2016 02:00:00"; 
var k = new Date(fullDate); 

Надеюсь, что смогу помочь!