获取毫秒时间戳
System.currentTimeMillis()
Date类
java.util.Date
构造器
new Date() // 创建基于当前系统时间的Date的实例
new Date(long millis) // 创建基于指定时间戳的Date的实例
方法
String toString() // 国际标准日期时间
long getTime() // 获取毫秒时间戳
java.sql.Date
对应数据库的date类型
构造器
Date(long millis) // 创建基于指定时间戳的Date的实例
方法
String toString() // 获取x年x月x日的字符串
long getTime() // 获取毫秒时间戳
SimpleDataFormt
格式化和解析日期的
SimpleDataFormt sdf = new SimpleDataFormt(); // 使用默认格式
String strDate = sdf.format(new Date()); // 24-3-10 下午2:21
Date d = sdf.parse("24-3-10 下午2:21"); // 将日期字符串转换为日期对象,必须使用sdf指定格式的字符串,否则会失败
SimpleDataFormt sdf = new SimpleDataFormt("yyyy-MM-dd HH:mm:ss"); // 使用指定格式,具体格式从jdk文档中查找
String strDate = sdf.format(new Date()); // 2024-03-10 14:21:00
Calendar类(日历)
是一个抽象类,Date类大API大部分废弃了,替换为Calendar
方法
Calendar getInstance() // 静态方法,获取GregorianCalendar对象
get(int field) // 获取指定field的值,field从jdk文档中查询(年月日周等)
set(int field, xx) // 设置指定field的值
add(int field, xx) // 将指定field的值添加一个值
getTime() // 获取Date对象字符串
setTime(Date date) // 将日期设置成Date对象
日期类存在的问题
可变性:像日期和时间这样的类应该是不可变的
偏移性:Date中的年份是从1900开始的,而月份都从0开始
格式化:格式化只对Date有用,Calendar不行
Date、Calendar也不是线程安全的,不能处理闰秒等
java.time包
JDK8新增日期API
LocalDate、LLocalTime、LocalDateTime类
LocalDate类:代表x年x月x日
LLocalTime类:代表x时x分x秒.x毫秒
LocalDateTime类:代表年x月x日Tx时x分x秒.x毫秒
方法
now() // 静态方法,根据当前时间创建对象
now(Zoneld zone) // 静态方法,指定市区的对象
of(int year, int month, int dayOfMonth) // 静态方法,创建指定日期的对象
of(int year, int month, int dayOfMonth, int hour, int minute, int seconds) // 静态方法,创建指定时间的对象
getDayOfMonth() // 获取日期在月份的第几天
getDayOfYear() // 获取日期在年份的第几天
getDayOfWeek() // 获取日期在周的第几天,星期几(DayOfWeek枚举)
getMonth() // 获取月份,一个Month枚举
getMonthValue() // 获取月份(1-12)
getYear() // 获取年份
getHours() // 获取小时
getMinute() // 获取分钟
getSecond() // 获取秒
withDayOfMonth() // 将月份天数修改为指定的值并返回新的对象
withDayOfYear() // 将年份天数修改为指定的值并返回新的对象
withMonth() // 将月份修改为指定的值返回并新的对象
withYear() // 将年份修改为指定的值返回并新的对象
with(TemporalAdjuster t) // 将当前日期时间设置为校对器指定的日期时间
plusDays() // 向当前对象添加几天并返回新的对象
plusWeeks() // 向当前对象添加几周并返回新的对象
plusMonths() // 向当前对象添加几月并返回新的对象
plusYears() // 向当前对象添加几年并返回新的对象
plusHourss() // 向当前对象添加几小时并返回新的对象
minusDays() // 向当前对象减少几天并返回新的对象
minusWeeks() // 向当前对象减少几周并返回新的对象
minusMonths() // 向当前对象减少几月并返回新的对象
minusYears() // 向当前对象减少几年并返回新的对象
minusHourss() // 向当前对象减少几小时并返回新的对象
plus(TemporalAmount t) // 添加一个Duration并返回新的对象
minus(TemporalAmount t) // 减少一个Period并返回新的对象
isBefore() // 比较两个LocalData
isAfter() // 比较两个LocalData
isLeapYear() // 判断是否是闰年
format(DateTimeFormatter t) // 格式化本地日期、时间,返回一个字符串
parse(Charsequence text) // 将指定格式的字符串解析为日期、时间
from(TemporalAccessot t) // 将TemporalAccessot转换为日期、时间对象
Instant类
时间上的一个瞬时点,可用来记录应用程序中的事件时间戳
方法
now() // 静态方法,返回默认utc时区的instant对象
ofEpochMilli(long epochMilli) // 静态方法,返回1970-01-01 00:00:00基础上加上指定毫秒之后的 instant对象
atOffset(ZoneOffset offset) // 将instant对象增加一个时区,获取指定时区的instant对象
toEpochMilli() // 返回当前时间毫秒数
DateTimeFormatter类
类似SimpleDataFormt
有预定义标准格式,在jdk文档中查看
方法
ofPattern(String pattern) // 静态方法,返回一个指定字符串格式的DateTimeFormatter
formt(TemporalAccessot t) // 格式化一个日期、时间、返回字符串
parse(Charsequence text) // 将指定格式的字符序列解析为一个日期、时间