Как добавить длинный суффикс Java l - PullRequest
0 голосов
/ 18 декабря 2018

Я на самом деле изо всех сил пытаюсь добавить суффикс "L" к длинному значению.

Службы JSON предоставляют мне метки времени в секундах.В своем выводе я хотел бы привести эту кучу секунд в каком-то читаемом формате.Поэтому я хотел бы использовать SimpleDateFormat, который должен иметь метку времени в миллисекундах.

Итак, я получил значение 1545151800, которое находится в секундах.Чтобы ввести i в миллисекундах, это будет (* 1000) 1545151800000

Поскольку это long, оно должно иметь значение 1545151800000L.

Как мне сделать, чтобы добавить "L" к моему значению?Невозможно добавить некоторые символы в long.Если меня не волнует суффикс "L", я получаю разные (неправильные) результаты.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

java.time

    String humanDateOfData = Instant.ofEpochSecond(timeOfData)
            .atZone(ZoneId.systemDefault())
            .format(dateFormatter);

Вы можете объявить форматер даты только один раз в своем классе, вместо того, чтобы создавать новый для каждого вызова toString:

static DateTimeFormatter dateFormatter
        = DateTimeFormatter.ofPattern("dd/MM/uuuu", Locale.US);

Вкл.мой компьютер в часовом поясе Европы / Копенгагена дал humanDateOfData 18/12/2018, который вы теперь можете использовать в возвращаемом значении toString.

В этом случае код длиннее, чем ваш код, но я все еще горячо рекомендую это.Используемые вами классы даты и времени, Date и SimpleDateFormat, плохо спроектированы, что, как известно, проблематично.Они также давно устарели.Вместо этого я использую java.time, современный API даты и времени Java, который вышел в 2014 году. Кроме того, хотя умножение на 1000 может показаться простым, выполнение ваших собственных преобразований времени очень часто сложно и подвержено ошибкам, так что это плохая привычкапопасть внутрь.Instant напрямую принимает секунды с начала эпохи, так что это больше не нужно.Наконец, современный код делает явным, что часовой пояс используется для определения даты, мне это нравится.Если вы знаете часовой пояс, вы также можете указать, какой из них, например, ZoneId.of("Asia/Harbin").

Lonk: Oracle Tutotial: Дата и время

0 голосов
/ 18 декабря 2018

Наконец-то у меня есть решение.Проблема была не в суффиксах, на которые указывал TJ Crowder.Это было связано с моей службой JAXB и json.

До исправления

После помещения двух строк в метод toString () все работало нормально.timeOfDataL уже использовался, в то время как timeOfData был все еще 0. Таким образом, 0 привело к 01/01/1970

После исправления

...