Répertoire d'articles
Résumé de l'heure et de la date Java
Date
java.util.Date
Est utilisé pour représenter un objet date et heure, attention et java.sql.Date
distinction, ce dernier est utilisé dans la base de données.
API principale
Date date = new Date();
date;//Tue Nov 03 13:26:57 CST 2020
//获取当前所在地日期
date.toLocaleString();//2020-11-3 13:26:57
//获取毫秒值
date.getTime();//1604381300674
//获取毫秒值
system.currentTimeMillis();//1604381311714
Format de la date
java.text.SimpleDateFormat
Utiliser une date formatée
personnage | sens |
---|---|
Oui | an |
M | mois |
ré | journée |
E | semaine |
H | Heure (au format 24 heures) |
h | Heure (horloge de 12 heures) |
m | Minute |
s | deuxième |
aaaa-MM-jj HH: mm: ss | 2020-01-01 17:15:30 |
Date à la chaîne
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = format.format(date);
System.out.println(dateStr);//2020-06-18 11:41:03
Chaîne à ce jour
String dateStr = "2020年08月07日 14时30分15秒";
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date date = format.parse(dateStr);
System.out.println(date);//Fri Aug 07 14:30:15 CST 2020
Calendrier
java.util.Calendar
C'est une classe pour manipuler l'année, le mois, le jour, les heures, les minutes et les secondes. Par rapport à Date
cela , il a plus de fonctions pour le calcul de la date et de l'heure.
API principale
//获取Calendar对象
Calendar calendar = Calendar.getInstance();
//获取Date对象
Date date = calendar.getTime();
//获取时间戳
long timeInMillis = calendar.getTimeInMillis();
long timeInMillis = date.getTime();
//获取年月日时分秒
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);//月份范围0-11
int day = calendar.get(Calendar.DATE);
int hour_12 = calendar.get(Calendar.HOUR);//12进制
int hour_24 = calendar.get(Calendar.HOUR_OF_DAY);//24进制
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
//获取月内第几周
int WEEK_OF_MONTH = calendar.get(Calendar.WEEK_OF_MONTH);
//获取年内第几天
int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);
//获取月内第几天
int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);
//获取星期几,范围(1-7),1为周日,7为周六
int DAY_OF_WEEK = calendar.get(Calendar.DAY_OF_WEEK);
//设置为上一月的最后一天
calendar.set(Calendar.DATE, 0);
Calcul de la date
//年份加1
calendar.add(Calendar.YEAR, 1);
//年份减2
calendar.add(Calendar.YEAR, -2);
//小时加1
calendar.add(Calendar.HOUR, 1);
LocalDate
java.time.LocalDate
Il s'agit d'une nouvelle API pour Java8, qui fournit une nouvelle API de date et d'heure et modifie la conception déraisonnable de l'ancienne API.
API principale
LocalDate localDate = LocalDate.now();//获取当前日期
System.out.println(localDate);//2020-11-03
LocalTime localTime = LocalTime.now();//获取当前时间
System.out.println(localTime);//14:34:32.802
LocalDateTime localDateTime = LocalDateTime.now();//获取当前日期时间
System.out.println(localDateTime);//2020-11-03T14:34:32.802
LocalDate date = localDateTime.toLocalDate();//转当前日期
LocalTime time = localDateTime.toLocalTime();//转当前时间
System.out.println(date + " " + time);//2020-11-03 14:36:23.766
//创建指定日期时间
LocalDate date = LocalDate.of(2008, 8, 8);
LocalTime time = LocalTime.of(15, 16, 17);
LocalDateTime dateTime = LocalDateTime.of(2008, 8, 8, 15, 16, 17);
Chaîne à ce jour
Le séparateur de date et d'heure spécifié par l'ISO 8601 est T
. Le format standard est le suivant:
- Date: aaaa-MM-jj
- Heure: HH: mm: ss
- Temps en millisecondes: HH: mm: ss.SSS
- Date et heure: aaaa-MM-jj'T'HH: mm: ss
- Date et heure en millisecondes: aaaa-MM-jj'T'HH: mm: ss.SSS
//遵守ISO 8601格式,可以直接使用parse方法
LocalDateTime dateTime = LocalDateTime.parse("2008-08-08T15:16:17");
LocalDate date = LocalDate.parse("2008-08-08");
LocalTime time = LocalTime.parse("15:16:17");
System.out.println(dateTime);//2008-08-08T15:16:17
System.out.println(date);//2008-08-08
System.out.println(time);//15:16:17
//非遵守ISO 8601格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse("2008/08/08 15:16:17", formatter);
System.out.println(dateTime);//2008-08-08T15:16:17
Date à la chaîne
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.now();
String dateTimeStr = formatter.format(dateTime);
System.out.println(dateTimeStr);//2020/11/03 14:46:56
Calcul de la date et de l'heure
Addition et soustraction
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);//2020-11-03T15:00:32.445
//先加5天,再减3小时
LocalDateTime dateTime1 = localDateTime.plusDays(5).minusHours(3);
System.out.println(dateTime1);//2020-11-08T12:00:32.445
//再减一个月
LocalDateTime dateTime2 = dateTime1.minusMonths(1);
System.out.println(dateTime2);//2020-10-08T12:00:32.445
Spécifier la modification
LocalDateTime d = LocalDateTime.now();
System.out.println(d);//2020-11-03T15:15:39.456
//日期修改为2008-8-8
LocalDateTime d2 = d.withYear(2008).withMonth(8).withDayOfMonth(8);
System.out.println(d2);//2008-08-08T15:15:39.456
Date du jugement
Au plus tard isBefore()
et isAfter()
déterminez la date et l'heure
LocalDateTime now = LocalDateTime.now();
LocalDateTime d2 = LocalDateTime.of(2008, 8, 8, 15, 16, 17);
System.out.println(now.isAfter(d2));//true
Outils de date et d'heure courants
package com.example.administrator.myapplication;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DateTimeUtils {
public static final String CONSTANT_DATE = "yyyy-MM-dd";
private DateTimeUtils() {
}
/**
* Date转String
*/
public static String formatDate(Date date, String format) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.format(date);
}
/**
* String转Date
*/
public static Date parseDate(String dateStr, String format) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
try {
Date date = simpleDateFormat.parse(dateStr);
return date;
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* 月日时分秒 0-9前补充0,并转为字符串
*/
public static String fillZero(int num) {
return num < 10 ? "0" + num : "" + num;
}
/**
* 去除前缀0,并转整数
*/
public static int trimZero(String text) {
if (text.startsWith("0")) {
text = text.substring(1);
}
try {
return Integer.parseInt(text);
} catch (NumberFormatException e) {
e.printStackTrace();
return 0;
}
}
/**
* 获取每月天数
*/
public static int getDaysInMonth(int year, int month) {
String[] bigMonths = {
"1", "3", "5", "7", "8", "10", "12"};
String[] littleMonths = {
"4", "6", "9", "11"};
List<String> bigList = Arrays.asList(bigMonths);
List<String> littleList = Arrays.asList(littleMonths);
// 判断大小月及是否闰年,用来确定"日"的数据
if (bigList.contains(String.valueOf(month))) {
return 31;
} else if (littleList.contains(String.valueOf(month))) {
return 30;
} else {
if (year <= 0) {
return 29;
}
// 是否闰年
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 29;
} else {
return 28;
}
}
}
/**
* 获取昨天日期
*/
public static String getYeasterDay() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
Date date = calendar.getTime();
return new SimpleDateFormat(CONSTANT_DATE).format(date);
}
/**
* 获取本周第一天
*/
public static String getFirstOfThisWeek() {
Calendar calendar = Calendar.getInstance();
int dayWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayWeek == 1) {
dayWeek += 7;
}
calendar.add(Calendar.DATE, 2 - dayWeek);
Date date = calendar.getTime();
return new SimpleDateFormat(CONSTANT_DATE).format(date);
}
/**
* 获取本周最后一天
*/
public static String getLastOfThisWeek() {
Calendar calendar = Calendar.getInstance();
int dayWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayWeek == 1) {
dayWeek += 7;
}
calendar.add(Calendar.DATE, 2 - dayWeek);
calendar.add(Calendar.DAY_OF_WEEK, 6);
Date date = calendar.getTime();
return new SimpleDateFormat(CONSTANT_DATE).format(date);
}
/**
* 获取本月第一天
*/
public static String getFirstOfMonth() {
Calendar calendar = Calendar.getInstance();//获取当前日期
calendar.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
Date date = calendar.getTime();
return new SimpleDateFormat(CONSTANT_DATE).format(date);
}
/**
* 获取本月最后一天
*/
public static String getLastOfMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date date = calendar.getTime();
return new SimpleDateFormat(CONSTANT_DATE).format(date);
}
}