Каков наилучший способ получить текущую дату/время в Java?
Как получить текущую дату/время в Java
Ответ 1
Это зависит от того, какую форму даты/времени вы хотите:
-
Если вы хотите, чтобы дата/время представляли собой одно числовое значение, то
System.currentTimeMillis()
даст вам это, выраженное в количестве миллисекунд после эпохи UNIX (в видеlong
Java). Это значение является дельтой времени UTC и не зависит от локального часового пояса... при условии, что системные часы были установлены правильно. -
Если вы хотите указать дату/время в форме, позволяющей получить цифровой доступ к компонентам (год, месяц и т.д.), Вы можете воспользоваться одним из следующих:
-
new Date()
дает вам объектDate
инициализированный с текущей датой/временем. Проблема в том, что методыDate
API в основном ошибочны... и устарели. -
Calendar.getInstance()
предоставляет вам объектCalendar
инициализированный с текущей датой/временем, используяLocale
по умолчанию иTimeZone
. Другие перегрузки позволяют вам использовать конкретнуюLocale
и/илиTimeZone
. Календарь работает... но API все еще громоздки. -
new org.joda.time.DateTime()
предоставляет вам объект Joda-time, инициализированный с текущей датой/временем, используя часовой пояс и хронологию по умолчанию. Есть много других альтернатив Joda... слишком много, чтобы описать здесь. (Но обратите внимание, что некоторые люди сообщают, что время Joda имеет проблемы с производительностью; например, LocalDateTime Jodatime работает медленно при первом использовании.) -
в Java 8 вызов
LocalDateTime.now()
иZonedDateTime.now()
даст вам представление 1 для текущей даты/времени.
-
До Java 8 большинство людей, которые знают об этих вещах, рекомендовали Joda-time как обладающую (безусловно) лучшими API-интерфейсами Java для выполнения задач, связанных с вычислением момента и продолжительности. С Java 8 это больше не так. Однако, если вы уже используете Joda время в вашем коде, нет сильной 2 причины миграции.
1 - Обратите внимание, что LocalDateTime не включает часовой пояс.Как говорит Javadoc: "Он не может представлять момент на временной шкале без дополнительной информации, такой как смещение или часовой пояс".
2 - Ваш код не сломается, если вы этого не сделаете, и вы не получите предупреждения об устаревании.Конечно, кодовая база Joda, вероятно, перестанет получать обновления, но вряд ли они понадобятся.Отсутствие обновлений означает стабильность, и это хорошо.Также обратите внимание, что весьма вероятно, что в этом случае кто-то исправит проблемы, вызванные регрессиями на платформе Java.
Ответ 2
Если вам просто нужно вывести отметку времени в формате YYYY.MM.DD-HH.MM.SS(очень частый случай), то вот как это сделать:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
Ответ 3
Если вы хотите, чтобы текущая дата была String, попробуйте следующее:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));
или
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
http://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/
Ответ 4
В Java 8 это:
LocalDateTime.now()
и если вам нужна информация о часовом поясе:
ZonedDateTime.now()
и в случае, если вы хотите напечатать строку с фантастическим форматированием:
System.out.println(ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME))
Ответ 5
Просто создайте объект Date...
Date date = new Date();
Ответ 6
// 2015/09/27 15:07:53
System.out.println( new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()) );
// 15:07:53
System.out.println( new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()) );
// 09/28/2015
System.out.println(new SimpleDateFormat("MM/dd/yyyy").format(Calendar.getInstance().getTime()));
// 20150928_161823
System.out.println( new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()) );
// Mon Sep 28 16:24:28 CEST 2015
System.out.println( Calendar.getInstance().getTime() );
// Mon Sep 28 16:24:51 CEST 2015
System.out.println( new Date(System.currentTimeMillis()) );
// Mon Sep 28
System.out.println( new Date().toString().substring(0, 10) );
// 2015-09-28
System.out.println( new java.sql.Date(System.currentTimeMillis()) );
// 14:32:26
Date d = new Date();
System.out.println( (d.getTime() / 1000 / 60 / 60) % 24 + ":" + (d.getTime() / 1000 / 60) % 60 + ":" + (d.getTime() / 1000) % 60 );
// 2015-09-28 17:12:35.584
System.out.println( new Timestamp(System.currentTimeMillis()) );
// Java 8
// 2015-09-28T16:16:23.308+02:00[Europe/Belgrade]
System.out.println( ZonedDateTime.now() );
// Mon, 28 Sep 2015 16:16:23 +0200
System.out.println( ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME) );
// 2015-09-28
System.out.println( LocalDate.now(ZoneId.of("Europe/Paris")) ); // rest zones id in ZoneId class
// 16
System.out.println( LocalTime.now().getHour() );
// 2015-09-28T16:16:23.315
System.out.println( LocalDateTime.now() );
Ответ 7
ТЛ; др
Instant.now() // Capture the current moment in UTC, with a resolution of nanoseconds. Returns a 'Instant' object.
... или...
ZonedDateTime.now( // Capture the current moment as seen in…
ZoneId.of( "America/Montreal" ) // … the wall-clock time used by the people of a particular region (a time zone).
) // Returns a 'ZonedDateTime' object.
java.time
Некоторые из Ответов упоминают, что классы java.time являются современной заменой проблемных старых устаревших классов даты и времени, связанных с ранними версиями Java. Ниже немного больше информации.
Часовой пояс
Другие ответы не объясняют, как часовой пояс имеет решающее значение при определении текущей даты и времени. В любой момент времени дата и время варьируются по всему земному шару в зависимости от зоны. Например, несколько минут после полуночи - это новый день в Париже, Франция, который все еще остается "вчера" в Монреале, Квебеке.
Instant
Большая часть вашей бизнес-логики и хранения/обмена данными должна выполняться в UTC, в качестве лучшей практики.
Чтобы получить текущий момент в UTC с разрешением в наносекундах, используйте класс Instant
. Обычные часы компьютерного оборудования ограничены в своей точности, поэтому текущий момент может быть зафиксирован в миллисекундах или микросекундах, а не в наносекундах.
Instant instant = Instant.now();
ZonedDateTime
Вы можете настроить этот Instant
на другие часовые пояса. Примените объект ZoneId
, чтобы получить ZonedDateTime
.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
Мы можем пропустить Instant
и получить текущий ZonedDateTime
напрямую.
ZonedDateTime zdt = ZonedDateTime.now( z );
Всегда передавайте этот необязательный аргумент часового пояса. Если опущен, применяется текущий часовой пояс по умолчанию для ваших виртуальных машин Java. Значение по умолчанию может измениться в любой момент, даже во время выполнения. Не подвергайте ваше приложение внешним воздействиям вне вашего контроля. Всегда указывайте желаемый/ожидаемый часовой пояс.
ZonedDateTime do_Not_Do_This = ZonedDateTime.now(); // BAD - Never rely implicitly on the current default time zone.
Позже вы можете извлечь Instant
из ZonedDateTime
.
Instant instant = zdt.toInstant();
Всегда используйте Instant
или ZonedDateTime
, а не LocalDateTime
, когда вам нужен фактический момент на временной шкале. Типы Local…
специально не имеют понятия часового пояса, поэтому они представляют лишь приблизительное представление о возможном моменте. Чтобы получить фактический момент, вы должны назначить часовой пояс для преобразования типов Local…
в ZonedDateTime
и тем самым сделать его осмысленным.
LocalDate
Класс LocalDate
представляет значение только для даты без времени суток и без часового пояса.
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z ); // Always pass a time zone.
Струны
Чтобы сгенерировать строку, представляющую значение даты и времени, просто вызовите toString
в классах java.time для стандартных форматов ISO 8601.
String output = myLocalDate.toString(); // 2016-09-23
... или...
String output = zdt.toString(); // 2016-09-23T12:34:56.789+03:00[America/Montreal]
Класс ZonedDateTime
расширяет стандартный формат, разумно добавляя название часового пояса в квадратных скобках.
Для других форматов найдите в Qaru множество вопросов и ответов в классе DateTimeFormatter
.
Избегайте LocalDateTime
Вопреки комментарию на вопрос от RamanSB, вы не должны использовать класс LocalDateTime
для текущей даты и времени.
В LocalDateTime
преднамеренно отсутствует какая-либо информация о часовом поясе или смещении от UTC. Таким образом, это не подходит, когда вы отслеживаете определенный момент на временной шкале. Конечно, не подходит для захвата текущего момента.
У LocalDateTime
есть только дата и время суток, такие как "полдень 23 января 2020 года", но мы не знаем, будет ли это полдень в Токио, Япония, или полдень в Толедо, Огайо, США, два разных момента, много часов друг от друга.
"Локальная" формулировка нелогична. Это означает любую местность, а не одну конкретную местность. Например, Рождество этого года начинается в полночь 25 декабря: 2017-12-25T00:00:00
, которое должно быть представлено как LocalDateTime
. Но это означает полночь в разных точках земного шара в разное время. Полночь наступает сначала в Кирибати, позже в Новой Зеландии, спустя несколько часов в Индии и т.д., Еще несколько часов проходит до того, как Рождество начинается во Франции, когда дети в Канаде все еще ждут этого дня. Каждая из этих рождественских стартовых точек будет представлена как отдельная ZonedDateTime
.
Из-за пределов вашей системы
Если вы не можете доверять системным часам, см. Java: получение текущей даты и времени с сервера, а не системных часов и моего ответа.
java.time.Clock
Чтобы использовать альтернативного поставщика текущего момента, напишите подкласс абстрактного класса java.time.Clock
.
Вы можете передать свою реализацию Clock
в качестве аргумента различным методам java.time. Например, Instant.now( clock )
.
Instant instant = Instant.now( yourClockGoesHere ) ;
В целях тестирования обратите внимание на альтернативные реализации Clock
, доступные статически из самого Clock
: fixed
, offset
, tick
и другие.
О java.time
Среда java.time встроена в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и & SimpleDateFormat
.
Чтобы узнать больше, см. Учебное пособие по Oracle. И поищите в Кару множество примеров и объяснений. Спецификация: JSR 310.
Проект Joda-Time, который теперь находится в режиме обслуживания, рекомендует выполнить переход на классы java.time.
Вы можете обмениваться объектами java.time напрямую с вашей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или более поздней версией. Нет необходимости в строках, нет необходимости в классах java.sql.*
.
Где взять классы java.time?
- Java SE 8, Java SE 9, Java SE 10, Java SE 11 и более поздние версии - часть стандартного Java API с встроенной реализацией ,
- Java 9 добавляет некоторые мелкие функции и исправления.
- Java SE 6 и Java SE 7
- Большая часть функциональности java.time перенесена на Java 6 & 7 в ThreeTen-Backport.
- Android
- Более поздние версии Android связывают реализации классов java.time.
- Для более ранних версий Android (& lt; 26) проект ThreeTenABP адаптирует ThreeTen-Backport (упомянуто выше). Смотрите Как использовать ThreeTenABP....
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и еще more.
Ответ 8
Использование:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
System.out.println(timeStamp );
(Он работает.)
Ответ 9
Существует много разных методов:
Ответ 10
Создайте объект даты и просто распечатайте его.
Date d = new Date(System.currentTimeMillis());
System.out.print(d);
Ответ 11
Аналогично описанным выше решениям. Но я всегда искал этот кусок кода:
Date date=Calendar.getInstance().getTime();
System.out.println(date);
Ответ 12
Вы посмотрели на java.util.Date? Это именно то, что вы хотите.
Ответ 13
java.util.Date date = new java.util.Date();
Он автоматически заполняется с момента его создания.
Ответ 14
1st Понять класс java.util.Date
1.1 Как получить текущую дату
import java.util.Date;
class Demostration{
public static void main(String[]args){
Date date = new Date(); // date object
System.out.println(date); // Try to print the date object
}
}
1.2 Как использовать метод getTime()
import java.util.Date;
public class Main {
public static void main(String[]args){
Date date = new Date();
long timeInMilliSeconds = date.getTime();
System.out.println(timeInMilliSeconds);
}
}
Это возвращает число миллисекунд с 1 января 1970 года, 00:00:00 GMT для сравнения времени.
1.3 Как форматировать время с помощью класса SimpleDateFormat
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
class Demostration{
public static void main(String[]args){
Date date=new Date();
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
String formattedDate=dateFormat.format(date);
System.out.println(formattedDate);
}
}
Также попробуйте использовать различные шаблоны формата, такие как "yyyy-MM-dd hh: mm: ss" и выберите желаемый шаблон. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
2nd Понять класс java.util.Calendar
2.1 Использование класса Calendar для получения текущей метки времени
import java.util.Calendar;
class Demostration{
public static void main(String[]args){
Calendar calendar=Calendar.getInstance();
System.out.println(calendar.getTime());
}
}
2.2 Попробуйте использовать setTime и другие методы набора для установки календаря на другую дату.
Источник: http://javau91.blogspot.com/
Ответ 15
Для java.util.Date, просто создайте новую дату()
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43
Для java.util.Calendar используется Calendar.getInstance()
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal)); //2016/11/16 12:08:43
Для java.time.LocalDateTime, использует LocalDateTime.now()
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
System.out.println(dtf.format(now)); //2016/11/16 12:08:43
Для java.time.LocalDate, использует LocalDate.now()
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate localDate = LocalDate.now();
System.out.println(dtf.format(localDate)); //2016/11/16
Ссылка: https://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/
Ответ 16
Я считаю, что это лучший способ:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime())); // 2014/08/06 16:00:22
Ответ 17
Использование:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd::HH:mm:ss");
System.out.println(sdf.format(System.currentTimeMillis()));
Оператор печати будет печатать время, когда он вызывается, а не когда был создан SimpleDateFormat
. Поэтому его можно многократно вызывать без создания каких-либо новых объектов.
Ответ 18
Посмотрите на класс Date. Также существует новый класс Calendar, который является предпочтительным методом выполнения многих операций даты и времени (многие методы в Дате устарели.)
Если вам просто нужна текущая дата, либо создайте новый объект Date, либо вызовите Calendar.getInstance();
.
Ответ 19
Как уже упоминалось, базовая Date() может делать то, что вам нужно, с точки зрения получения текущего времени. В моем недавнем опыте работы с датами Java существует много странностей со встроенными классами (а также устаревание многих методов класса Date). Одна странность, которая выделялась для меня, заключалась в том, что месяцы основаны на индексе 0, который с технической точки зрения имеет смысл, но в реальном выражении может быть очень запутанным.
Если вас интересует только текущая дата, которая должна быть достаточной - однако, если вы намереваетесь много манипулировать/вычислять с датами, может быть очень полезно использовать стороннюю библиотеку (так много существует, потому что многие разработчики Java имеют были неудовлетворены встроенной функциональностью).
Вторая рекомендация Стивена C, поскольку я нашел, что Joda-время очень полезно для упрощения моей работы с датами, также очень хорошо документировано, и вы можете найти множество полезных примеров в Интернете. Я даже закончил писать статический класс-оболочку (как DateUtils), который я использую для консолидации и упрощения всех моих общих манипуляций с датами.
Ответ 20
Новый Data-Time API представлен на заре Java 8. Это связано со следующими проблемами, которые были вызваны в старом Data-Time API.
Сложно обрабатывать часовой пояс: необходимо написать много кода для работы с часовыми поясами.
Не потокобезопасен: java.util.Date не является потокобезопасным.
Так что посмотрите вокруг с Java 8
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.Month;
public class DataTimeChecker {
public static void main(String args[]) {
DataTimeChecker dateTimeChecker = new DataTimeChecker();
dateTimeChecker.DateTime();
}
public void DateTime() {
// Get the current date and time
LocalDateTime currentTime = LocalDateTime.now();
System.out.println("Current DateTime: " + currentTime);
LocalDate date1 = currentTime.toLocalDate();
System.out.println("Date : " + date1);
Month month = currentTime.getMonth();
int day = currentTime.getDayOfMonth();
int seconds = currentTime.getSecond();
System.out.println("Month : " + month);
System.out.println("Day : " + day);
System.out.println("Seconds : " + seconds);
LocalDateTime date2 = currentTime.withDayOfMonth(17).withYear(2018);
System.out.println("Date : " + date2);
//Prints 17 May 2018
LocalDate date3 = LocalDate.of(2018, Month.MAY, 17);
System.out.println("Date : " + date3);
//Prints 04 hour 45 minutes
LocalTime date4 = LocalTime.of(4, 45);
System.out.println("Date : " + date4);
// Convert to a String
LocalTime date5 = LocalTime.parse("20:15:30");
System.out.println("Date : " + date5);
}
}
Вывод вышеуказанной кодировки:
Current DateTime: 2018-05-17T04:40:34.603
Date : 2018-05-17
Month : MAY
Day : 17
Seconds : 34
Date : 2018-05-17T04:40:34.603
Date : 2018-05-17
Date : 04:45
Date : 20:15:30
Ответ 21
System.out.println( new SimpleDateFormat("yyyy:MM:dd - hh:mm:ss a").format(Calendar.getInstance().getTime()) );
//2018:02:10 - 05:04:20 PM
дата/время с AM/PM
Ответ 22
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft =
new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Current Date: " + ft.format(dNow));
}
}
вы можете использовать дату для текущих данных fet. поэтому с помощью
SimpleDateFormat
получить формат
Ответ 23
Я создал эти методы, это работает для меня...
public String GetDay() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd")));
}
public String GetNameOfTheDay() {
return String.valueOf(LocalDateTime.now().getDayOfWeek());
}
public String GetMonth() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("MM")));
}
public String GetNameOfTheMonth() {
return String.valueOf(LocalDateTime.now().getMonth());
}
public String GetYear() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy")));
}
public boolean isLeapYear(long year) {
return Year.isLeap(year);
}
public String GetDate() {
return GetDay() + "/" + GetMonth() + "/" + GetYear();
}
public String Get12HHour() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("hh")));
}
public String Get24HHour() {
return String.valueOf(LocalDateTime.now().getHour());
}
public String GetMinutes() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("mm")));
}
public String GetSeconds() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("ss")));
}
public String Get24HTime() {
return Get24HHour() + ":" + GetMinutes();
}
public String Get24HFullTime() {
return Get24HHour() + ":" + GetMinutes() + ":" + GetSeconds();
}
public String Get12HTime() {
return Get12HHour() + ":" + GetMinutes();
}
public String Get12HFullTime() {
return Get12HHour() + ":" + GetMinutes() + ":" + GetSeconds();
}
Ответ 24
Вы можете использовать объект и формат Date
самостоятельно. В качестве примера трудно форматировать и нуждаться в дополнительных кодах.
Date dateInstance = new Date();
int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
int date = dateInstance.getDate();
int month = dateInstance.getMonth();
int day = dateInstance.getDay();
int hours = dateInstance.getHours();
int min = dateInstance.getMinutes();
int sec = dateInstance.getSeconds();
String dayOfWeek = "";
switch(day){
case 0:
dayOfWeek = "Sunday";
break;
case 1:
dayOfWeek = "Monday";
break;
case 2:
dayOfWeek = "Tuesday";
break;
case 3:
dayOfWeek = "Wednesday";
break;
case 4:
dayOfWeek = "Thursday";
break;
case 5:
dayOfWeek = "Friday";
break;
case 6:
dayOfWeek = "Saturday";
break;
}
System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
System.out.println("Time: " + hours +":"+ min + ":" + sec);
вывод:
Date: 2017-6-23 Sunday
Time: 14:6:20
Как вы можете видеть, это самый худший способ сделать это, и согласно документации оракула это устарело.
Oracle doc:
Класс Date представляет определенный момент времени, с миллисекундой точность.
До JDK 1.1 класс Date имел две дополнительные функции. Это позволили интерпретировать даты как год, месяц, день, час, минуту, и вторых значений. Это также позволило форматировать и разбор даты строки. К сожалению, API для этих функций не поддавался к интернационализации. Начиная с JDK 1.1, класс Calendar должен быть используется для преобразования между полями даты и времени и классом DateFormat следует использовать для форматирования и синтаксического анализа строк даты. Соответствующий методы в Дате устарели.
Таким образом, вы можете использовать Calendar
класс,
Calendar.YEAR;
//and lot more
Чтобы получить текущее время, вы можете использовать:
Calendar rightNow = Calendar.getInstance();
Doc:
Как и другие языковые классы,
Calendar
предоставляет метод класса,getInstance
, для получения обычно полезного объекта этого типа. Календарный методgetInstance
возвращает объектCalendar
, чей календарь поля были инициализированы текущей датой и временем
Ниже код для получения только даты
Date rightNow = Calendar.getInstance().getTime();
System.out.println(rightNow);
Кроме того, класс Calendar
имеет подклассы. GregorianCalendar
является одним из них и конкретным подклассом Calendar
и предоставляет стандартную систему календаря, используемую большей частью мира.
Пример использования GregorianCalendar
:
Calendar cal = new GregorianCalendar();
int hours = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int ap = cal.get(Calendar.AM_PM);
String amVSpm;
if(ap == 0){
amVSpm = "AM";
}else{
amVSpm = "PM";
}
String timer = hours + "-" + minute + "-" + second + " " +amVSpm;
System.out.println(timer);
Вы можете использовать SimpleDateFormat
, простой и быстрый способ форматирования даты:
String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = simpleDateFormat.format(new Date());
System.out.println(date);
Прочтите это Учебник Jakob Jenkov: Java SimpleDateFormat.
Как уже упоминалось, когда нам нужно делать манипуляции с датами, у нас не было простого и лучшего способа, или мы не смогли удовлетворить встроенные классы API.
В качестве примера, когда нам нужно получить разницу между двумя датами, когда нам нужно сравнить две даты (там также встроенный метод) и многие другие. Нам пришлось использовать сторонние библиотеки. Один из хороших и популярных - Joda Time.
Также читайте:
- Как правильно установить текущую дату и время в Joda-Time?
- JodaTime - как получить текущее время в UTC
- Примеры для
JodaTime
. - Загрузить Joda
. Самое счастливое в настоящее время (в java 8), никому не нужно скачивать и использовать библиотеки по каким-либо причинам. Простой пример получения текущей даты и времени в Java 8,
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
//with time zone
LocalTime localTimeWtZone = LocalTime.now(ZoneId.of("GMT+02:30"));
System.out.println(localTimeWtZone);
Одно из хорошее сообщение в блоге, чтобы прочитать о дате Java 8.
И помните, чтобы узнать больше о дате и времени Java, потому что есть много способов и/или полезных способов, которые вы можете получить/использовать.
- Учебники Oracle для даты и времени.
- Учебники Oracle для форматирования.
- Урок: Стандартный календарь.
EDIT:
Согласно комментарию @BasilBourque, неудобные старые классы времени, такие как java.util.Date
, java.util.Calendar
и java.text.SimpleTextFormat
теперь legacy, вытесненный java.time
classes.
Ответ 25
Я пойду вперед и поставлю этот ответ, потому что это все, что мне нужно, когда у меня был такой же вопрос:
Date currentDate = new Date(System.currentTimeMillis());
currentDate
теперь является вашей текущей датой в объекте Java Date
.
Ответ 26
просто попробуйте этот код:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CurrentTimeDateCalendar {
public static void getCurrentTimeUsingDate() {
Date date = new Date();
String strDateFormat = "hh:mm:ss a";
DateFormat dateFormat = new SimpleDateFormat(strDateFormat);
String formattedDate= dateFormat.format(date);
System.out.println("Current time of the day using Date - 12 hour format: " + formattedDate);
}
public static void getCurrentTimeUsingCalendar() {
Calendar cal = Calendar.getInstance();
Date date=cal.getTime();
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String formattedDate=dateFormat.format(date);
System.out.println("Current time of the day using Calendar - 24 hour format: "+ formattedDate);
}
}
какой пример вывода:
Текущее время дня с использованием даты - 12-часовой формат: 11:13:01 PM
Текущее время дня с использованием Календаря - 24-часовой формат: 23:13:01
больше информации о: