У меня есть метка времени, которая выглядит примерно так: 2015-11-12T20:45:24+0000
. Это генерируется чужим скриптом, который якобы использует команду UNIX date
(возможно, что-то вроде строк date -u +%Y-%m-%dT%H:%M:%S%z
).Есть ли лучший способ отформатировать эту метку времени до ISO8601?
Однако, согласно DateTimeFormatter
Яве, ближайший формат ISO 8601
для этого будет ISO_OFFSET_DATE_TIME
, который выглядит следующим образом: 2015-11-12T20:45:24+00:00
(уведомления дополнительного двоеточие в конце). Если я передам в свою версию отметки времени, синтаксический анализатор не сможет обработать его, но если я вручную добавлю двоеточие, то проблем не будет.
Мой вопрос: Есть ли более простой, надежный/надежный способ обработки этих временных меток? Я получаю временные метки, которые могут или не могут иметь, что окончательное двоеточие ограничивающую минуты и секунды, и в настоящее время мой код имеет такую проверку в нем:
// We expect a colon at index length-3 (the colon delimits the hours:minutes of the timezone offset)
char colon = ':';
int expectedIndexOfColon = string.length() - 3;
// If that colon is not there, add it
if (string.lastIndexOf(colon) == expectedIndexOfColon) {
return string;
} else {
int substringIndex = string.length() - 2;
return string.substring(0, substringIndex) + colon + string.substring(substringIndex);
}
Это выглядит Hacky, и мне было интересно, если бы был более элегантный способ обработки этих двух разных форматов. Я знаю о Joda-Time, но их парсер также отклоняет временную метку без двоеточия (от того, что я пробовал). Кроме того, Joda-Time рекомендует использовать Java java.time
для Java 8 в любом случае (это я).
Создайте два формата, которые отвечают вашим требует один и один без ':', попробуйте оба и используйте тот, который не сбой – MadProgrammer
@MadProgrammer. Что вы подразумеваете под созданием двух форматов? – yiwei
Вы можете использовать 'DateTimeFormatter.ofPattern' для создания собственных шаблонов. Если в тексте иногда есть ':', а иногда нет, вы можете использовать два форматирования для проверки текста и использовать тот, который проходит – MadProgrammer