2014-12-14 5 views
0

В моей JavaScript я введите дату в ниже формате в виде строкипреобразования строки в JSON формат даты

12.12.2014 

Я хочу, чтобы преобразовать JSON формат даты как ниже

/Date(1358866800000)/ 

Как я мог этого добиться , Я попытался использовать код, который преобразуется в формат JSON, но не работает.

function convertToJSONDate(strDate){ 
var dt = new Date(strDate); 
var newDate = new Date(Date.UTC(dt.getFullYear(), dt.getMonth(), dt.getDate(), dt.getHours(), dt.getMinutes(), dt.getSeconds(), dt.getMilliseconds())); 
return '/Date(' + newDate.getTime() + ')/'; 
} 

Когда я пытаюсь использовать выше функции, как convertToJSONDate("12.12.2014"), я получаю дату, как этот '/Date(NaN)/

Как я мог этого добиться?

+0

Ничего [этого] (http://stackoverflow.com/q/1056728/1169519)? Проверьте также документацию, чтобы узнать правильную форму аргумента, переданного 'Date'. В настоящее время у вас неверная форма. – Teemu

+0

@Teemu ни один из ваших примеров не говорит о конвертации в JSON. Можете ли вы дать мне конкретный пример. – Happy

+0

Вы можете преобразовать в JSON с помощью 'JSON.stringify()', но аргумент, переданный 'Date', должен быть правильно сформирован. – Teemu

ответ

1

Строки вы передаете в конструктор Дейта не является действительным

function convertToJSONDate(strDate){ 
    var splitted = strDate.split("."); 
    var dt = new Date(splitted[2],splitted[0],splitted[1]); 
    var newDate = new Date(Date.UTC(dt.getFullYear(), dt.getMonth(), dt.getDate(), dt.getHours(), dt.getMinutes(), dt.getSeconds(), dt.getMilliseconds())); 
    return '/Date(' + newDate.getTime() + ')/'; 
} 

convertToJSONDate("12.1.2014"); 

Другим упрощенным вариантом может быть:

function convertToJSONDate(strDate){ 
    var splitted = strDate.split("."); 
    //var dt = new Date(splitted[2],splitted[0],splitted[1]); 
    var newDate = new Date(Date.UTC(splitted[2], splitted[0], splitted[1])); 
    return '/Date(' + newDate.getTime() + ')/'; 
} 

convertToJSONDate("12.1.2014"); 
-1

попробовать, как это ..

@JsonSerialize (с использованием = CustomJsonDateSerializer .class) @JsonDeserialize (с использованием = CustomJsonDateDeserializer.class)

0

@AlexBcn Отличный ответ, но вам нужно вычесть 1 из месяца, потому что месяцы основаны на нуле.

function convertToJSONDate(strDate){ 
     var splitted = strDate.split("."); 
     var newDate = new Date(Date.UTC(splitted[2], (splitted[1] - 1), splitted[0])); 
     return '/Date(' + newDate.getTime() + ')/'; 
    } 
    //console.log(convertToJSONDate("10.01.2018")); 
    //Output: Wed Jan 10 2018 01:00:00 GMT+0100 (Central European Standard Time) 
    //Output without subtraction: Sat Feb 10 2018 01:00:00 GMT+0100 (Central European Standard Time) 
Смежные вопросы