Date 类
所在的包:java.util.Date文章源自亦枫博客-https://yflad.cn/2052.html
Date 类表示特定的瞬间,精确到毫秒。创建对象的值为从1970年1月1日00:00:00
到当前系统显示时间所经历的毫秒数。文章源自亦枫博客-https://yflad.cn/2052.html
例如:文章源自亦枫博客-https://yflad.cn/2052.html
public static void main(String[] args) { // 获取当前时间到1970-1-1 00:00:00 经历了多少毫秒 System.out.println(System.currentTimeMillis()); }
- 因为中国属于东八区,会把时间增加8个小时。1970-1-1 08:00:00
Date 类因为2000年出现的千年虫问题,导致该类的很多方法都已经过时,无法使用。但是其中未过时的构造函数可以把毫秒值转成常见的日期格式。文章源自亦枫博客-https://yflad.cn/2052.html
还有个别的方法可以使用:文章源自亦枫博客-https://yflad.cn/2052.html
1、[code]getTime();[/code] 返回从1970年1月1日00:00:00到当前系统显示时间所经历的毫秒数。文章源自亦枫博客-https://yflad.cn/2052.html
2、[code]setTime(long time);[/code] 设置从1970年1月1日00:00:00以后 time 毫秒的时间点。文章源自亦枫博客-https://yflad.cn/2052.html
Date类的语法: [code]Date date =new Date();[/code]文章源自亦枫博客-https://yflad.cn/2052.html
public static void main(String[] args) { test1(); test2(); test3(); } // date类空参数构造方法,获取当前系统时间 private static void test1() { Date aa = new Date(); System.out.println(aa); //Thu Dec 20 23:46:26 CST 2018 } //date类带参数构造方法,(long date)传递毫秒数,把毫秒值转换为Date日期 private static void test2() { Date bb = new Date( ); System.out.println(bb); //Thu Dec 20 23:36:21 CST 2018 } //getTime() 把日期转换成毫秒 private static void test3() { Date cc = new Date(); long cc1 = cc.getTime(); System.out.println(cc1); //1545320786661 }
文章源自亦枫博客-https://yflad.cn/2052.html
DateFormat 类
所在的包:java.text.DateFormat:文章源自亦枫博客-https://yflad.cn/2052.html
DateFormat 是日期(时间)格式化子类的抽象类(抽象类不可以实例化)文章源自亦枫博客-https://yflad.cn/2052.html
通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。文章源自亦枫博客-https://yflad.cn/2052.html
功能:文章源自亦枫博客-https://yflad.cn/2052.html
格式化:按照指定的格式,从Date对象转换为String对象。(日期 -> 文本)文章源自亦枫博客-https://yflad.cn/2052.html
解析:按照指定的格式,从String对象转换为Date对象。(文本-> 日期)文章源自亦枫博客-https://yflad.cn/2052.html
文章源自亦枫博客-https://yflad.cn/2052.html
成员方法:
- format():将日期格式化 中国的时间显示方式为:yyyy-MM-dd HH:mm:ss
- parse():将格式的日期转为日期格式
注:parse方法声明了一个异常叫[code]ParseException[/code],如果字符串和构造方法的模式不一样,那么程序就会抛出此异常文章源自亦枫博客-https://yflad.cn/2052.html
调用一个抛出了异常的方法,就必须的处理这个异常,要么throws(throws ParseException)继续抛出这个异常,要么try catch自己处理文章源自亦枫博客-https://yflad.cn/2052.html
文章源自亦枫博客-https://yflad.cn/2052.html
因为DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类:[code]SimpleDateFormat[/code]文章源自亦枫博客-https://yflad.cn/2052.html
构造方法:
SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
例:
public static void main(String[] args) { Date date = new Date(); System.out.println(date); //对日期进行格式化。创建SimpleDateFormat对象,构造方法中传递指定的模式 SimpleDateFormat a = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把日期格式化成字符串(文本) String b = a.format(date); System.out.println(b); //将格式化的时间方式转为日期格式 SimpleDateFormat a2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //异常处理 try { Date d = a2.parse("2018-12-21 15:25:05"); System.out.println(d); } catch(ParseException e) { System.out.println("转换失败!"); } }
输入:
例:计算一个人已经出生多少天?
public static void main(String[] args) throws ParseException { Scanner sc = new Scanner(System. in ); System.out.println("请输入你的出生日期:(格式为:yyyy-MM-dd)"); String baby = sc.next(); // 对日期进行格式化 SimpleDateFormat a = new SimpleDateFormat("yyyy-MM-dd"); Date bab = a.parse(baby); // 对格式化的日期转换成毫秒数 long babs = bab.getTime(); // 获取当前日期,转换成毫秒数 long today = new Date().getTime(); // 相减 long t = today - babs; // 转换成天 System.out.println(t / 1000 / 60 / 60 / 24); }
输出:
Calendar 日历类
所在包:java.util.Calendar
该类的存在就是为了操作时间的
Calendar 类是一个抽象类,没有自身的实现类,但是可以通过自身提供的getInstance()获取日期对象。
static Calendar getInstance():使用默认时区和语言环境获得一个日历。
常用的方法:
- add(参数1,参数2);
参数1 表示操作的时间字段,
参数2 为正数为加法操作,为负数为减法操作
@Test public void test1() { //add //获取calendar对象 Calendar a=Calendar.getInstance(); //年份加2年 a.add(Calendar.YEAR,2); //日期减10天 a.add(Calendar.DAY_OF_MONTH,-10); int y=a.get(Calendar.YEAR); System.out.println(y); int d=a.get(Calendar.DAY_OF_MONTH); System.out.println(d); }
2. get(int field):返回给定日历字段的值。
@Test public void test2() { //get Calendar c = Calendar.getInstance(); System.out.println("今天是" + c.get(Calendar.YEAR) + "年中的第" + c.get(Calendar.DAY_OF_YEAR) + "天"); System.out.println("今天是第" + c.get(Calendar.DAY_OF_WEEK_IN_MONTH) + "周的第" + c.get(Calendar.DAY_OF_WEEK) + "天"); }
3. set(int field, int value):将给定的日历字段设置为给定值。
@Test public void test3() { //set Calendar c = Calendar.getInstance(); System.out.println("第一周的第一天为:" + c.getFirstDayOfWeek()); System.out.println(c); c.set(Calendar.DAY_OF_WEEK, 1); int b = c.get(Calendar.DAY_OF_WEEK); System.out.println(b); c.set(2020, 2, 10); System.out.println(d); }
更多可以参考API文档: