JAVA 日期和时间详解
1.简述
在完成项目时,难免要与日常生活接触,其中必不可少的一部分就是"时间"的应用,在java中包含时间的类有许多个,
例如,java.util.Data,,java.sql.Data等事件类型,接下来就详细的讲述一下各种时间类型的应用。
2.时间类型
2.1 System类中的currentTimeMillis( )
返回当前时间与1970年1月1日0时0点0分0秒之间以毫秒为单位的时间差。
1 public void test1() { 2 long millis = System.currentTimeMillis(); 3 System.out.println(millis);//1649421505146 4 }
2.2 java.util.Date类 与其子类 java.sql.Date类 和 java.sql.Time类 和 java.sql.TimeStamp类
java.sql.Time 和 java.sql.Date 都没有不接受任何参数的构造函数, 分别接收的是 Long型的 Time 和 Date .
1 public void test2() { 2 java.util.Date juDate = new java.util.Date(0); 3 System.out.println(juDate);//Thu Jan 01 08:00:00 CST 1970 4 5 java.util.Date juDate1 = new java.util.Date(); 6 System.out.println(juDate1);//Fri Apr 08 20:56:59 CST 2022 7 8 java.sql.Date jsDate = new Date(0); 9 System.out.println(jsDate);//1970-01-01 10 11 java.sql.Date jsDate2 = new Date(new java.util.Date().getTime()); 12 System.out.println(jsDate2);//2022-04-08 13 14 java.sql.Time jsTime = new Time(0); 15 System.out.println(jsTime);//08:00:00 16 17 java.sql.Time jsTime1 = new Time(new java.util.Date().getTime()); 18 System.out.println(jsTime1);//20:56:59 19 20 java.sql.Timestamp jsTimestamp = new Timestamp(0); 21 System.out.println(jsTimestamp);//1970-01-01 08:00:00.0 22 23 java.sql.Timestamp jsTimestamp1 = new Timestamp(new java.util.Date().getTime()); 24 System.out.println(jsTimestamp1);//2022-04-08 20:56:59.379 25 }
2.3 java.text.SimpleDateFormat类
SimpleDateFormat实例化:
1 public void test3() { 2 java.util.Date date = new java.util.Date(); 3 SimpleDateFormat sDateFormat1 = new SimpleDateFormat();//22-4-8 下午9:01 4 SimpleDateFormat sDateFormat2=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//2022年04月08日 21时01分37秒 5 SimpleDateFormat sDateFormat3=new SimpleDateFormat("yy/MM/dd HH:mm"); //22/04/08 21:01 6 SimpleDateFormat sDateFormat4=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()2022-04-08 21:01:37 7 SimpleDateFormat sDateFormat5=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");//2022年04月08日 21时01分37秒 星期五 8 System.out.println(sDateFormat1.format(date)); 9 }
Date模式 与 SimpleDateFormat 进行转化
1 SimpleDateFormat构造函数: 2 public SimpleDateFormat(String pattern);//构造方法,pattern意思为模板 3 public Date parse(String source)throws ParseException //转换-->此时取得的是全部时间数。 4 5 public final String Format(Date date) //格式化-->将时间重新格式化成字符串显示 6 public void test4() { 7 String strDate = "2008-10-19 10:11:30.345" ; 8 // 准备第一个模板,从字符串中提取出日期数字 9 String pat1 = "yyyy-MM-dd HH:mm:ss.SSS" ; 10 // 准备第二个模板,将提取后的日期数字变为指定的格式 11 String pat2 = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒" ; 12 SimpleDateFormat sdf1 = new SimpleDateFormat(pat1) ; // 实例化模板对象 13 SimpleDateFormat sdf2 = new SimpleDateFormat(pat2) ; // 实例化模板对象 14 java.util.Date d1 = null ; 15 try{ 16 d1 = sdf1.parse(strDate); // 将给定的字符串中的日期提取出来 ,反转换,结果为Sun Oct 19 10:11:30 CST 2008 17 System.out.println(d1); 18 }catch(Exception e){ // 如果提供的字符串格式有错误,则进行异常处理 19 e.printStackTrace() ; // 打印异常信息 20 } 21 }
2.4 java.util.Calender类
1 // 实例化 2 // 方式一:调用其静态方法 instance() 3 Calendar calendar = Calendar.getInstance(); 4 System.out.println(calendar); 5 System.out.println(calendar.getClass());// class java.util.GregorianCalendar 6 /*[time=1649430810648,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000, 7 dstSavings=0,useDaylight=false,transitions=19,lastRule=null], 8 firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=3,WEEK_OF_YEAR=15,WEEK_OF_MONTH=2,DAY_OF_MONTH=8, 9 DAY_OF_YEAR=98,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=11, 10 HOUR_OF_DAY=23,MINUTE=13,SECOND=30,MILLISECOND=648,ZONE_OFFSET=28800000,DST_OFFSET=0]*/ 11 12 // 方式二:创建其子类(GregorianCalendar)对象。 13 GregorianCalendar gregorianCalendar = new GregorianCalendar(); 14 System.out.println(gregorianCalendar); 15 // 常用方法 16 // get() 17 int day = calendar.get(Calendar.DAY_OF_MONTH); 18 System.out.println(day);// 4月的第8天 19 System.out.println(calendar.get(Calendar.DAY_OF_YEAR));// 2022年的第98天 20 // set() 21 calendar.set(Calendar.DAY_OF_YEAR, 32);// 日历从0月开始计算,输出为1月,意思为第二月 22 System.out.println(calendar.get(Calendar.MONTH)); 23 // add() 24 calendar.add(Calendar.DAY_OF_YEAR, 55);// 在当前日期添加55天 25 System.out.println(calendar.get(Calendar.MONTH)); 26 // getTime() 27 java.util.Date date = calendar.getTime(); 28 System.out.println(date);// Mon Mar 28 23:13:30 CST 2022 29 // setTime() 30 calendar.setTime(new java.util.Date());