Конвертировать эпоху GMT в CST - PullRequest
0 голосов
/ 02 мая 2011

Я пытаюсь преобразовать время по Гринвичу, которое хранится в эпоху, в CST.

Ниже приведен текущий код, который я запускаю в Java.

        if (originalRFC.get("sysmodtime")!=null){    
        var sysmod = originalRFC.get("sysmodtime");                                 // Hold the sysmodtime value in a variable

        logger.debug('Sysmodtime Before: ' + sysmod);                               // Output to log before before converstion to CST - (in GMT)

        var format = new java.text.SimpleDateFormat("MMMM d, yyyy HH:mm:ss a z");   // Format the string will be in        
        var dateString = sysmod.toLocaleString();                                   // Convert the epoch to the string equivalent in CST 
        var parsedDate = format.parse(dateString);                                  // Convert that CST String back to epoch 
        var sysmodConvert = parsedDate.getTime();                                   // Convert it to time and milliseconds

        logger.debug('Sysmodtime After: ' + sysmodConvert);                                 //Output to log after conversion to CST

        genericRFC.setField("last-update-time",sysmodConvert);
}

См. Ниже ошибки, которые возвращаются в журнале, мы можем видеть время до "1301382996000", и оно прерывается, когда я пытаюсь преобразовать:

2011-05-02 14: 25: 49,926 [http-8080-1] сценарий sm702-adapter_convert - время Sysmodtime: 1301382996000 2011-05-02 14: 25: 49,941 [http-8080-1] сценарий sm702-adapter_convert - ошибка при вызове функции преобразования org.apache.bsf.BSFException: ошибка JavaScript: java.text.ParseException: не разбираемая дата: "[объект JavaObject]"

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

Для начала toLocaleString () зависит от локали и может отличаться от используемого вами формата (на самом деле он находится вне вашего контроля).

Во-вторых, если вы знаете смещение часового пояса CST, вы можетевсегда используйте getTime(), добавьте смещение и используйте setTime(), чтобы преобразовать его.
В мире Java есть что-то вроде java.util.TimeZone, которое может дать вам правое смещение (используйте getOffset()) уже в миллисекундах.

0 голосов
/ 03 мая 2011

Предполагая, что под «эпохой» подразумевается метка времени UNIX (секунды с начала эпохи UNIX), этот формат времени не зависит от часового пояса. То есть ваша временная метка не является UTC, GMT, CST или любым другим часовым поясом. Это просто количество секунд.

Вы применяете часовые пояса, когда вы переформатируете временную метку как нечто удобочитаемое человеком. В этом случае просто загрузите его в Date объект, и ваш местный часовой пояс должен быть использован.

...