1. Epoch Time
System.currentTimeMillis(), 返回值long类型参数, 获取当前日期的毫秒值 3742769374405- 时间原点: 公元1970年1月1日,午夜0:00:00 英国格林威治 毫秒值就是0
-
2. java.util.Date
构造方法:
- public Date():当前系统的时间和日期
- public Date(long times)
- Date类的get和set方法:
- 创建SimpleDateFormat对象,在类构造方法中,写入字符串的日期格式 (自己定义)
- 调用
public String format(Date date)传递日期对象,返回字符串 ```java /*- yyyy 年
- MM 月
- dd 日
- HH 0-23小时
- mm 0-59分
- ss 0-59 秒
- SSS 0-999毫秒
- X|XX|XXX => -08 | -0800 | -08:00 ISO 8601 time zone
- z|zz|zzz => Pacific Standard Time | PST | GMT-08:00 */ DateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ssXXX”); ZoneId z = ZoneId.of( “America/Toronto” ); formatter.setTimeZone(TimeZone.getTimeZone(z));
String myDateStr = formatter.format(new Date());
**注意**:DateFormat 对象默认你提供的Date的timezone是UTC. 所以使用时应该设置calendar的时区。<a name="hn0bF"></a>### 把字符串转换成Date- 调用方法 parse(dateStr) 传递String,返回Date- 注意:转换时,该String要符合指定格式,否则会抛出`parseException````javaDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");Date date = formatter.parse("2017-11-14T16:02:39+02:00");
4. java.util.Calendar
Calendar是一个抽象类,不需要直接new子类对象而是通过静态方法getInstance()获取。其真实实现类是GregorianCalendar。
成员方法:
- Date getTime() 把日历对象,转成Date日期对象
- void setTime(Data date): 把Date日期转成日历对象
get(日历字段) 获取指定日历字段的值
// 获取年份int year = c.get(Calendar.YEAR);// 获取月份, 需要手动+1int month = c.get(Calendar.MONTH) + 1;// 获取天数int day = c.get(Calendar.DAY_OF_MONTH);
set(int field, int value) 设置日期
//设置月份为9月calendar.set(Calendar.MONTH, 10);
日历的偏移:add(int field, int value)
//偏移到上个月calendar.add(Calendar.MONTH, -1);
5. 时间计算举例
a. 计算两个时间的间隔
public long getDaysInterval(Date date1, Date date2){long timeInterval = Math.abs(date1.getTime() - date2.getTime());long days = timeInterval / (1000*60*60*24);return days;}
b. 比较两个时间的大小
public boolean isEarilier(Date date1, Date date2) {return date1.getTime() < date2.getTime();}
c. 得到上个月的date
Calendar calendar = Calendar.getInstance();Date lastMonthDate = calendar.add(Calendar.MONTH, -1).getTime();
d. 判断是否是闰年
public boolean isLeepYear(int year) {Calendar calendar = Caleandar.getInstance();//将日历,设置到指定年的3月1日c.set(2088, 2, 1);//日历add方法,向前偏移1天c.add(Calendar.DAY_OF_MONTH, -1);//get方法获取天数int day = c.get(Calendar.DAY_OF_MONTH);return day==29;}
