2015-07-16 4 views
0

У меня есть объект Date JavaScript, Thu Jul 02 2015 00:00:00 GMT-0400 (Eastern Standard Time), который передается методу Java, который хранит эту дату в объекте Java Date. Но объект даты Java показывает эту дату как Wed Jul 01 23:00:00 CDT 2015. Как я могу получить правильное преобразование из JavaScript Date to Java Date?JavaScript Дата преобразования в неправильную дату Java

Примечание: Это происходит только в том случае, если у меня установлен мой компьютер на восточное стандартное время, а часы установлены на 9 часов. Помимо этого, если я установил часовой пояс своего ПК обратно в Центральное стандартное время, это уже не проблема.

Update

Количество миллисекунд от эпохи до 07/02/15 является 1435809600000. Если взять эти миллисекунды и создать объект Date JS, как это так, new Date(1435809600000), я получаю это: чт Июль 02 2015 00:00:00 GMT-0400 (Восточное стандартное время). Но когда я пытаюсь создать объект Java Date, new Date(1435809600000), я получаю: ср 1 июля 23:00:00 CDT 2015

+0

Добавьте строку, которую вы передаете java из js, и как вы ее форматируете – prakharsingh95

ответ

2

Лучшее решение для передачи данных в виде длинных (миллисекунды от 1/1/1970) и создать новую Date в java, начиная с нее.

Javascript код

Java код

long dateMillis = .... // Milliseconds long representing the date 
Date date = new Date(dateMillis); 
+0

Я думал, что это тоже сработает. Я обновил OP, объяснив результаты попыток того, что вы предложили. – Kyle

+1

Проблема в том, что вы используете другое стандартное время в java и javascript. Если вы используете то же самое, он должен работать. –

+0

Я выбрал это. Я понял, что клиент использует часовой пояс EST, а сервер использует часовой пояс КНТ. – Kyle

0

Try с:

String fromJavascript = "Thu Jul 02 2015 00:00:00 GMT-0400"; 

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'Z", Locale.US); 

try { 
    Date converted = sdf.parse(fromJavascript); 

    System.out.println(converted); 
} catch (ParseException e) {    
    e.printStackTrace(); 
} 

конвертированы объект должен содержать правильную дату. То, что печатается, будет зависеть от TZ работающего клиента. Но что вы можете контролировать при представлении.

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