复习java日常语法,记下笔记,在方面自己的同时很开心能够帮到他人;
java进行日期操作一般分为Date和Calendar类:
Data类:
该类存在于java.util包中,基本构造方法主要有两个:
- Date() 分配Data对象进行初始化
- Date(long date) 分配时间对象并进行初始化,以表示自从标准基准时间(1970年1月1日00:00:00GMT)到现在指定的时间毫
例如:
public static void main(String[] args) {
long timeMills = System.currentTimeMillis();
Date date = new Date(timeMills);
System.out.println(date); //2018-10-31
}
其中System.currentTimeMills()是获得当前时间距离标准基准时间的时间差毫秒级。可以通过一下方式进行观察.
System.out.println(date.getTime()); //1540964373086
这里不介绍Data类里面有关于时间比较的操作,官方建议使用Calendar。
由于数字(/1540964373086 )我们看不懂,我们需要对时间进行格式化操作,变成我们日常习惯的;
建议使用DateFormate的SimpleDateFormat类进行格式化:
import java.sql.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class MyDate {
public static void main(String[] args) {
long timeMills = System.currentTimeMillis();
Date date = new Date(timeMills);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
DateFormat format1 = new SimpleDateFormat("yyyy年mm月dd日 hh:mm:ss EE", Locale.CHINA);
System.out.println(format.format(date)); //2018-10-31 01:49:39
System.out.println(format1.format(date)); //2018年49月31日 01:49:39 星期三
}
}
在SimpleDataFormat中我们传入参数
yyyy:表示年;
MM-表示月份;
dd-表示天
hh;表示小时(12进制) HH(24进制)
ss;表示秒
EE 表示星期
Calendar类
是一个抽象类,它为特定瞬间例如YEAR,MONTH,DAY_OF_MONTH,HOUR 等日历字段之间等转换提供了一个方法。方便进行各种日期操作;
实例化:Calender 提供了一个方法getInstance,以获得当前类型等一个通用类型。
Calendar calender = Calendar.getInstance();
存在一下常用方法:
- add(int filed,int amount) 根据日历的规则,为规定的日历添加或者减去指定的时间;
- after(Object when) 判断此时间是否在指定when之后,返回判断结果;
- getInstance() 使用电脑默认时区和语言环境获得一个日历;
- set(int year,int month,int data,int hourOfDay,int minute) 设置日历字段年月日,时分秒;
实战小程序;倒计时北京2022冬奥会;2022年2月4日
import java.sql.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
public class OlympicWinterGames {
public static void main(String[] args) {
//计算冬奥会倒计时时间
long currentMills = System.currentTimeMillis();
Date date = new Date(currentMills);
DateFormat format = new SimpleDateFormat("yyyy年mm月dd日",Locale.CHINA);
System.out.println("今天是"+format.format(date));
Calendar calendar = Calendar.getInstance();
//因为月份是从0开始计算的
calendar.set(2022,2-1,4);
long olympicTime = calendar.getTimeInMillis();
long day = (olympicTime-currentMills)/(1000*60*60*24);
System.out.println("距离北京冬奥会还有"+day+"天");
}
}
//今天是2018年10月31日
//距离北京冬奥会还有1192天