Преобразование длинных дат

#java #c# #date #date-conversion

#java #c# #Дата #преобразование даты

Вопрос:

Недавно я начал поддерживать систему / приложение, написанное на Java.

Мне нужно преобразовать приведенную ниже длинную дату в читаемую дату, такую как 21 октября 2016 :

 Login date : 634940995544109969
Logout date : 63494125060775764
  

Я пробовал разные коды, кажется, у меня что-то не получается.
Решение может быть на Java или c #.

Комментарии:

1. У вас есть пример из источника о том, как генерируется это число?

2. Что же представляют эти цифры? Они не выглядят как миллисекунды или даже микросекунды с эпохи Unix… откуда вы взяли эти значения?

3. Для преобразования вам нужно больше знать о Login и Logout .

4. Ах, еще одно рабочее задание, замаскированное под вопрос, даже с оправданием «Я пытался, но ничего не получилось :'(«.

5. «63» в начале обоих чисел совпадает с первыми двумя цифрами количества секунд между 1 января 1 года н.э. и 21 октября 2016 года н.э. (63 612 604 800). Время выхода из системы на порядок меньше, чем дата входа в систему. Итак, если это кратно количеству секунд, прошедших с 1 января, AD 1, то пользователь вошел в систему в современное время, но вышел из системы около AD 200. Пожалуйста, расскажите нам все о вашем компьютере, путешествующем во времени. А еще лучше, предложите это как новый телесериал.

Ответ №1:

Вы должны добавить L в конце ввода .

Попробуйте следующий код.

     public static void main(String[] args) {
    long val = 634940995544109969L;
    Date date=new Date(val);
    System.out.println(DateFormat.getDateInstance().format(date));
}
  

Выходные данные будут в удобочитаемом формате.
Например: приведенный выше код выдаст 5 марта 20122449 в качестве выходных данных .
Миллисекунды преобразуются в дату.

Вы можете проверить правильность вывода по ссылке ниже

Преобразование в миллисекундах до даты

Комментарии:

1. Предполагая, что это long представляет миллисекунды с момента эпохи

Ответ №2:

Вы также можете преобразовать, используя приведенный ниже код

     public static void main(String[] args) {
    long lMilliSeconds = 634940995544109969L;

    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(lMilliSeconds);
    System.out.println(cal.getTime());
}
  

Примечание-: Я учел, что время задается в миллисекундах.

Выходные данные -: Пт, 05 марта, 07:45:09 IST 20122449

Ответ №3:

попробуйте следовать в c#

  long a = 634940995544109969;
            DateTime dt = new DateTime(a);
            Console.WriteLine(dt.ToString("dd MMM yyyy"));