java日期时间api小计
java日期时间api小计
JinJDK8 之前:日期时间 API
java.lang.System
System 类提供的 public static long currentTimeMillis()
:用来返回当前时间与 1970 年 1 月 1 日 0 时 0 分 0 秒之间以毫秒为单位的时间差
java.util.Date
构造器:
- Date():无参构造获取本地时间
- Date(long 毫秒数):通过毫秒数转换成时间对象
常用方法:
- getTime(): 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象 表示的毫秒数
举例
public void DateTest(){
Date d1 = new Date();
Date d2 = new Date(1559807047979L);
long time = d1.getTime();
}
java.text.SimpleDateFormat
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类
SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行
格式化:日期 –> 文本
解析:文本 –> 日期
构造器:
- SimpleDateFormat ():默认格式创建对象
- SimpleDateFormat (String parten):指定的格式创建一个对象
格式化:
- public String format(Date date):方法格式化日期对象,通过构造器指定格式
解析:
- public Date parse(String source):从给定字符串的开始解析文本,以生成 一个日期
例如:
public void DateTest(){
Date date = new Date();
// 指定格式
SimpleDateFormat sf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒 SSS 毫秒 ");
// 日期格式化
String dateStr = sf.format(date);
String dateStr2 = "2022 年 06 月 06 日 16 时 03 分 14 秒 545 毫秒";
// 解析,指定格式的字符串解析成日期对象
Date date2 = sf.parse(dateStr2);
}
注意: yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制
时间和日期格式化的编码
java.util.Calendar
Calendar 类是一个抽象类,主用用于完成日期字段之间相互操作的功能
Calendar.getInstance() 方法获取实例:
- getInstance():默认日历
- getInstance(Locale alocale):使用默认时区和指定语言环境
- getInstance(TimeZone zone):使用指定时区和默认语言环境
- getInstance(TimeZone zone, Locale alocale):指定时区,指定语言环境
一个 Calendar 的实例是系统时间的抽象表示,可以修改或获取 YEAR、MONTH、 DAYOFWEEK、HOUROFDAY 、MINUTE、SECOND 等 日历字段对应的时间值
- public int get(int field):返回给定日历字段的值
- public void set(int field,int value) :将给定的日历字段设置为指定的值
- public void add(int field,int amount):根据日历的规则,为给定的日历字段 添加或者减去指定的时间量
- public final Date getTime():将 Calendar 转成 Date 对象
- public final void setTime(Date date):使用指定的 Date 对象重置 Calendar 的时间
常用字段:
字段 | 含义 |
---|---|
YEAR | 年 |
MONTH | 月(从0开始) |
DAY_OF_WEEK | 周中的天(周几,周日为1) |
HOUR_OF_DAY | 时(24小时制) |
MINUTE | 分 |
SECOND | 秒 |
HOUR | 时(12小时制) |
DAY_OF_MONTH | 月中的天(几号) |
例如:
Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);
.JDK8:新的日期时间 API
新的 java.time 中包含了所有关于时钟(Clock),本地日期 (LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、 时区(ZonedDateTime)和持续时间(Duration)的类
LocalDate、LocalTime、LocalDateTime
方法 | 描述 |
---|---|
now() / now(ZoneId zone) | 静态方法,根据当前时间创建对象 / 指定 时区的对象 |
of(xx,xx,xx,xx,xx,xxx) | 静态方法,根据指定日期/时间创建对象 |
getDayOfMonth() / getDayOfYear() | 获得月份天数(1-31) / 获得年份天数(1- 366) |
getDayOfWeek() | 获得星期几(返回一个 DayOfWeek 枚举值) |
getMonth() | 获得月份, 返回一个 Month 枚举值 |
getMonthValue() / getYear() | 获得月份(1-12) /获得年份 |
getHours() / getMinute() / getSecond() | 获得当前对象对应的小时、分钟、秒 |
withDayOfMonth() / withDayOfYear() / withMonth() / withYear() | 将月份天数、年份天数、月份、年份修改为指定的值并返回新的对象 |
with(TemporalAdjuster t) | 将当前日期时间设置为校对器指定的日期时间 |
plusDays(), plusWeeks(), plusMonths(), plusYears(), plusHours() | 向当前对象添加几天、几周、几个月、 几年、几小时 |
minusMonths() / minusWeeks() / minusDays() / minusYears() / minusHours() | 从当前对象减去几月、几周、几天、几 年、几小时 |
plus(TemporalAmount t) / minus(TemporalAmount t) | 添加或减少一个 Duration 或 Period |
isBefore() / isAfter() | 比较两个 LocalDate |
isLeapYear() | 判断是否是闰年(在 LocalDate 类中声 明) |
format(DateTimeFormatter t) | 格式化本地日期、时间,返回一个字符串 |
parse(Charsequence text) | 将指定格式的字符串解析为日期、时间 |
例如:
public void testTime(){
LocalDate nowDate = LocalDate.now(); // 2023-06-20
LocalTime nowTime = LocalTime.now(); // 09:36:29.488299
LocalDateTime nowDateTime = LocalDateTime.now(); // 2023-06-20T09:36:29.488362
LocalDate lai = LocalDate.of(2019, 5, 13); // 2019-05-13
LocalDate go = lai.plusDays(160); // 2019-10-20
}
DateTimeFormatter
该类提供了三种格式化方法:
- (了解)预定义的标准格式。如:ISOLOCALDATETIME、ISOLOCALDATE、 ISOLOCAL_TIME
- (了解)本地化相关的格式。如:ofLocalizedDate(FormatStyle.LONG)
- 自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
方法:
- ofPattern(String pattern) :静态方法,返回一个指定字符串格式的 DateTimeFormatter
- format(TemporalAccessort):格式化一个日期、时间,返回字符串
- parse(CharSequence text) :将指定格式的字符序列解析为一个日期、时间
例如:
// 自定义格式方法
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
// 格式化
String strDateTime = df.format(LocalDateTime.now());
//解析
TemporalAccessor accessor = dateTimeFormatter.parse("2022/12/04 21:05:42");
LocalDateTime localDateTime = LocalDateTime.from(accessor);
参考资料
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果