У меня есть номер дня в году. (Сегодняшний день - 308.) Я хочу преобразовать это число в дату в формате SQL (YYYY/MM/DD
). Могу ли я сделать это в java?Конвертировать день года в дату в java
Заранее спасибо.
У меня есть номер дня в году. (Сегодняшний день - 308.) Я хочу преобразовать это число в дату в формате SQL (YYYY/MM/DD
). Могу ли я сделать это в java?Конвертировать день года в дату в java
Заранее спасибо.
int dayOfYear = 112;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, dayOfYear);
SimpleDateFormat sdf = new SimpleDateFormat("YYYY/MM/dd");
System.out.println("Day of year " + dayOfYear + " = " + sdf.format(calendar.getTime()));
надежда выше фрагментах поможет вам
Спасибо за ответ, я попробую это, и я дам вам знать, если это поможет! – Asjon
Это работает, спасибо большое! – Asjon
FYI, неприятные старые классы времени, такие как ['java.util.Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date.html), [ 'java.util.Calendar'] (https://docs.oracle.com/javase/9/docs/api/java/util/Calendar.html) и' java.text.SimpleDateFormat' теперь [наследие] (https://en.wikipedia.org/wiki/Legacy_system), вытесненный [java.time] (https://docs.oracle.com/javase/9/docs/api/java/time/package-summary. html), встроенные в Java 8 и Java 9. См. [Учебное пособие по Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –
Year.of(2018)
.atDay(308)
java.time2018-11-04
Современный подход использует java.t ime, встроенные в Java 8 и более поздние версии.
Класс LocalDate
представляет собой значение только для даты без времени суток и без часового пояса.
Year
класс представляет, ну, год. И включает в себя метод atDay(dayOfYear)
, где вы передаете свой порядковый день в году.
int dayOfYear = 308 ;
Year y = Year.of(2018) ;
LocalDate ld = y.atDay(dayOfYear) ;
Дамп для консоли.
System.out.println("dayOfYear: " + dayOfYear + " at year: " + y + " = " + ld) ;
См. Это code run live at IdeOne.com.
DayOfYear: 308 в год: 2018 = 2018-11-04
Что касается генерации строки в определенном формате, поиск DateTimeFormatter
класса, как было покрыто много уже много раз.
И, кстати, ваш конкретный формат вовсе не «формат SQL». Независимо от того, вы должны обмениваться объектами с вашей базой данных, а не просто строками. Обратите внимание на методы и setObject
в JDBC при использовании драйвера, совместимого с JDBC 4.2 или новее.
java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытесняют неприятные старые legacy классы времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time, в настоящее время в maintenance mode, советует перейти на классы java.time.
Чтобы узнать больше, см. Oracle Tutorial. И поиск Stack Overflow для многих примеров и объяснений. Спецификация: JSR 310.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more.
[SimpleDateFormat] (http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html), например, имеет формат 'D', который представляет день в году. Вы можете просто проанализировать его до 'Date', указав номер – SomeJavaGuy
. Нет такой вещи, как формат SQL, или формат даты вообще. Даты сохраняются как * двоичные * значения во всех базах данных. Форматы применяются только тогда, когда вы указываете даты из/в строки или сохраняете дату в виде строки вместо фактического значения с типом даты –
Формат даты ANSI SQL равен YYYY-MM-DD. Но вы хотите это на Java? – jarlh