Вы можете использовать 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);
output:
Date: 2017-6-23 Sunday
Time: 14:6:20
Как вы можете видеть, это худший способ сделать это и в соответствии сДокументация Oracle: устарела .
Oracle doc:
Класс Date представляет определенный момент времени с точностью до миллисекунды.
До JDK 1.1 класс Date имел две дополнительные функции.Это позволило интерпретировать даты как значения года, месяца, дня, часа, минуты и секунды.Это также позволило форматировать и анализировать строки даты.К сожалению, API для этих функций не поддается интернационализации.Начиная с JDK 1.1, класс Calendar должен использоваться для преобразования полей даты и времени, а класс DateFormat должен использоваться для форматирования и анализа строк даты.Соответствующие методы в Date устарели.
Таким образом, вы можете использовать Calendar
class,
Calendar.YEAR;
//and lot more
. Чтобы получить текущее время, вы можетеuse:
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);
Прочитайте это Учебное пособие Якоба Дженкова: Java SimpleDateFormat .
Как уже упоминалось, когда нам нужно было манипулировать датами, у нас не было простого и лучшего способа или мы не могли удовлетворить встроенные классы, API.
Например,Когда нам нужно различаться между двумя датами , когда нам нужно сравнить две даты (для этого есть встроенный метод) и многие другие.Нам пришлось использовать сторонние библиотеки.Одним из хороших и популярных является Joda Time.
Также читайте:
.Сейчас самое счастливое (в 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, потому что есть намного больше способов и / или полезных способов, которые вы можете получить / использовать.
РЕДАКТИРОВАТЬ:
Согласно комментарию @BasilBourque, старые классные классы даты и времени, такие как java.util.Date
, java.util.Calendar
и java.text.SimpleTextFormat
, теперь наследуют , вытесненные java.time
классы .