Как разобрать этот формат даты:
"/Дата(1514728800000+0300)/"
Я не знаю, что означает это число или знак +
.
Как разобрать этот формат даты:
"/Дата(1514728800000+0300)/"
Я не знаю, что означает это число или знак +
.
Частичный ответ: число — это эпоха.
Это количество секунд с 1 января 1970 года по всемирному координированному времени.
Это значение можно передать в конструктор java.util.Date, что даст вам объект Date
с правильным значением.
+0300 неясно, возможно, это ссылка на другой часовой пояс.
Я не уверен насчет +0300, но вы можете преобразовать время эпохи в дату с помощью следующей функции:
Date date = new Date(Long.parseLong(myDateToParse.replaceAll("[^\\d-]", "")));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss", Locale.DEFAULT);
long
, равное 15147288000000300
, но последние цифры (0300
) не являются частью значения миллис, и его не следует передавать конструктору Date
(ваш код создает дату в году 481968). !) - вы должны пройти только 1514728800000
. А Locale.DEFAULT
не существует, возможно, вы имели в виду Locale.getDefault()
?
- person ; 18.10.2017
Вот код, который анализирует это, предполагая, что у вас есть unixtimestamp_zoneoffset
String inputStr = "1514728800000+0300";
String[] splitStr = inputStr.split("[+-]");
String offsetSign = inputStr.indexOf("+")>0 ? "+" : "-";
ZonedDateTime captureTime = Instant.ofEpochMilli(Long.valueOf(splitStr[0])).atZone(ZoneOffset.of(offsetSign+splitStr[1]));
Возвращаемое значение: 2017-12-31T17:00+03:00.
1970-01-01T00:00Z
). Вторая часть (+0300
) — это смещение UTC, представляющее собой отличие от UTC (в этом случае, на 3 часа вперед UTC). Но что должно получиться в результате разбора?java.util.Date
? Любой другой объект? - person   schedule 18.10.2017