EDIT: Ну, я нашел что-то новое!
Вы можете использовать Timestamp.valueOf()
для форматирования строки времени со значением yyyy-[m]m-[d]d hh:mm:ss[.f...]
Так что он также может обрабатывать микро/nano секунды. Единственное, что вам нужно сделать, это заменить Tпробелом.
Это работает:
String datetimeLocal = "1985-04-12T23:20:50.52";
System.out.println(Timestamp.valueOf(datetimeLocal.replace("T"," ")));
Выход:
1985-04-12 23:20:50.52
Согласно this site ваш resetTimeString выглядит следующим образом: '1985-04-12T23: 20: 50,52' (a)
я не мог найти способ, чтобы преобразовать это в метку времени непосредственно, но вы можете просто разделить его вручную:
String[] dateTime = datetimeLocal.split("T");
String[] date = dateTime[0].split("-");
String[] time = dateTime[1].split(":");
Это будет печатать:
System.out.println("DateTime: " + Arrays.toString(dateTime));
System.out.println("Date: " + Arrays.toString(date));
System.out.println("Time: " + Arrays.toString(time));
>>> DateTime: [1985-04-12, 23:20:50]
>>> Date: [1985, 04, 12]
>>> Time: [23, 20, 50]
После этого вы можете просто создать новая Отметка: (Это не рекомендуется!)
Timestamp stamp = new Timestamp(Integer.valueOf(date[0]).intValue() - 1900,
Integer.valueOf(date[1]).intValue(),
Integer.valueOf(date[2]).intValue(),
Integer.valueOf(time[0]).intValue(),
Integer.valueOf(time[1]).intValue(),
Integer.valueOf(time[2].split("\\.")[0]).intValue(),
Integer.valueOf(time[2].split("\\.")[1]).intValue());
Обратите внимание, что, если вы используете это, вы должны вычесть «1900» от года и раскола точек с \\.
Кроме того, вы должны обращаться с наносекунд (в моем примере я использую значение 50.52 в секундах, но строка, возвращаемая с сервера не может содержать наносекунд)
Можно также вычислить длинный от даты и использовать new Timestamp(<long>)
Я надеюсь, что это помогает :) Ответу
Я надеялся, что там может быть другой, более удобный способ сделать это. Но спасибо в любом случае :) – Aliaxander
Посмотрите в начало моего сообщения ... Я думаю, что это поможет вам лучше :) – Cyphrags
Вариант действительно лучше. Благодаря! – Aliaxander