Я пытался решить эту проблему в течение прошедшего дня и не могу найти более элегантный (стиль Groovy), надеюсь, что кто-то может мне помочь.Список замены замещения и изменения часового пояса
В основном у меня есть список, содержащий временные метки (GMT-0), поступающие из внешнего источника, которые необходимо преобразовать в указанный часовой пояс (в данном случае Paris GMT + 2), а затем заменить оригинальные отметки времени в список с новым временем (GMT + 2) в формате эпохи.
Примечание: Я попытался использовать GregorianCalendar, но не смог определить, как установить временную зону ввода (GMT-0), чтобы я мог преобразовать вмененное время в любой часовой пояс.
Это мое уродливое решение:
def tStamp= ['2012-06-14T20:16:20Z', '2012-06-14T20:16:40Z', '2012-06-14T20:17:00Z', '2012-06-14T20:17:20Z', '2012-06-14T20:17:40Z', '2012-06-14T20:18:00Z'] println "Ext: "+ tStamp tStamp = tStamp.collect { 7200+(new Date().parse("yyyy-MM-dd'T'HH:mm:ss'Z'", it).time.toString().toLong()/1000).toInteger() } println "New: "+ tStamp Ext: [2012-06-14T20:16:20Z, 2012-06-14T20:16:40Z, 2012-06-14T20:17:00Z, 2012-06-14T20:17:20Z, 2012-06-14T20:17:40Z, 2012-06-14T20:18:00Z] New: [1339704980, 1339705000, 1339705020, 1339705040, 1339705060, 1339705080]
Новая версия:
def timeStamps =['2012-06-18T09:11:00Z', '2012-06-18T09:11:20Z', '2012-06-18T09:11:40Z']
println "ORIG: "+ timeStamps
// Import the external time: GMT-0
def inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
inputFormat.timeZone = TimeZone.getTimeZone('GMT-0')
timeStamps = timeStamps.collect { inputFormat.parse(it) }
println "IN: "+ timeStamps
// Convert the timez to GMT+2 and conver to epoch
timeStamps = timeStamps.collect { def gcal = new GregorianCalendar(TimeZone.getTimeZone("GMT+2")); gcal.setTime(it); return gcal.getTimeInMillis()/1000 }
println "OUT: "+ timeStamps
ORIG: [2012-06-18T09:11:00Z, 2012-06-18T09:11:20Z, 2012-06-18T09:11:40Z]
IN: [Mon Jun 18 11:11:00 CEST 2012, Mon Jun 18 11:11:20 CEST 2012, Mon Jun 18 11:11:40 CEST 2012]
OUT: [1340010660, 1340010680, 1340010700]
Кто-нибудь есть какие-либо предложения?
С наилучшими пожеланиями и спасибо заранее,
Sebastian
Спасибо за ответ. С вашей помощью мне удалось правильно ввести временную метку, но теперь, как я могу преобразовать ее в формат эпохи в GMT + 2. Я пробовал это (см. Пост-обновление), но не учитывая часовой пояс. Есть ли у вас предложения? – syepes
@syepes извините, я не знаю. Я не слишком опытен со всеми сложностями на сегодняшний день; у меня создалось впечатление, что время в миллисекундах было относительно абсолютной даты и что это не зависело от часового пояса или чего-то подобного. – epidemian