У меня возникают проблемы с методом format
объекта SimpleDateFormat.
Данный код:
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(date);
Где "дата" - это объект Date, созданный с использованием длинного int из Calendar.getTimeInMillis();
Calendar cal = Calendar.getInstance();
Date date = new Date(cal.getTimeInMillis());
Все работает отлично, за исключением годовой части строки. Когда я передаю дату, выводимая строка выглядит следующим образом:
0044-09-10 05:30:24
Передаваемый объект даты создается из длинного целого числа, возвращаемого из:
Calendar.getTimeInMillis();
Я верю, что число, возвращаемое из этого метода, подсчитывает миллисекунды с 1 января. 1970, о котором я думаю, является проблемой, но даже если я добавлю количество миллисекунд в 1970-е годы (lol, возможно, неправильно, но это стоило выстрела: P), он все еще анализирует 0044 в год.
Я сделал многочисленные поисковые запросы Google, и все, кажется, указывают простые проблемы в строке, переданной конструктору SimpleDateFormat, поэтому я здесь не понимаю.
Любая помощь очень ценится.
Пожалуйста, дайте мне знать, нужна ли какая-либо другая информация, и я сделаю все возможное, чтобы предоставить ее.
Еще раз спасибо!
EDIT:
Я решил, что я объясню контекст немного больше:
Техник запустит вызов, и по прибытии на сайт отметит вызов как "Начал".
Затем приложение создаст экземпляр Calendar
и сохранит long int, возвращенный из Calendar.getTimeInMillis()
.
Когда технический специалист завершит вызов, он/она будет отмечать вызов как "Завершить". Опять же, создается экземпляр Calendar
и сохраняется длинный int, возвращаемый из Calendar.getTimeInMillis()
.
Это позволяет легко вычислять продолжительность вызова.
Теперь, когда используется закрывающая форма, которую использует техник в приложении, длинные int, сохраненные во время вызовов, передаются объекту Date
, который затем передается методу SimpleDateFormat.format()
.
Здесь возникает проблема. Еще раз спасибо, надеюсь, это помогло.