Date
Java 时间与日期处理
在java.util.Date
也是被诟病已久,它包含了日期、时间、毫秒数等众多繁杂的信息,其内部利用午夜java.util.Date
与 SimpleDateFormatter
都不是类型安全的,而LocalDate
与 LocalTime
等则是不变类型,更加适合于并发编程。java.util.Date
类,因为它代表了一个确定的时间点,即相对于标准java.util.Date
类不同的是其精确到了纳秒级别。另一个则是
Class / Type | Description |
---|---|
Year | Represents a year. |
YearMonth | A month within a specific year. |
LocalDate | A date without an explicitly specified time zone. |
LocalTime | A time without an explicitly specified time zone. |
LocalDateTime | A combination date and time without an explicitly specified time zone. |
最新
SQL | Java |
---|---|
date | LocalDate |
time | LocalTime |
timestamp | LocalDateTime |
datetime | LocalDateTime |
Date
yyyy-mm-dd hh:mm:ss
;
// 默认创建
Date date0 = new Date();
// 从 TimeStamp 中创建
Date date1 = new Date(time);
// 基于 Instant 创建
Date date = Date.from(instant);
// 从格式化字符串中获取
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
java.util.Date dt=sdf.parse("2005-2-19");
// 从 LocalDateTime 中转化而来
Date out = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
获取与比较
基于
-
使用
getTime() 方法获取两个日期( 自1970 年1 月1 日经历的毫秒数值) ,然后比较这两个值。 -
使用方法
before() ,after() 和equals() 。例如,一个月的12 号比18 号早,则new Date(99, 2, 12).before(new Date (99, 2, 18))
返回true 。 -
使用
compareTo()
方法,它是由Comparable 接口定义的,Date 类实现了这个接口。
public static void main(String[] args) {
Date date = new Date(1359641834000L);// 本地时间 2013-1-31 22:17:14 对应的时间戳
String dateStr = "2013-1-31 22:17:14";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
try {
Date dateTmp = dateFormat.parse(dateStr);
// System.out.printIn 默认按照本地时间打印
System.out.println(dateTmp);
} catch (ParseException e) {
e.printStackTrace();
}
String dateStrTmp = dateFormat.format(date);
System.out.println(dateStrTmp);
}
// Fri Feb 01 06:17:14 CST 2013
// 2013-01-31 14:17:14
操作系统是
Calendar
Calendar.Builder builder =new Calendar.Builder();
Calendar calendar1 = builder.build();
Date date = calendar.getTime();
在
// 2017,不再是 2017 - 1900 = 117
int year =calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
int day =calendar.get(Calendar.DAY_OF_MONTH);
int hour =calendar.get(Calendar.HOUR_OF_DAY);
int minute =calendar.get(Calendar.MINUTE);
int seconds =calendar.get(Calendar.SECOND);
除此之外,
SimpleDateFormat
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");