9.日期、日历相关类

一.java.util.Date

public static void main(String[] args) {
        Date d=new Date();
        System.out.println(d);//Sun Nov 01 13:24:39 CST 2020
        System.out.println(d.toString());//Sun Nov 01 13:24:39 CST 2020
        System.out.println(d.toGMTString());//过时方法,不建议使用,1 Nov 2020 05:24:39 GMT
        System.out.println(d.toLocaleString());//2020-11-1 13:24:3
        System.out.println(d.getYear());//120
        System.out.println(d.getMonth());//10
        System.out.println(d.getTime());//1604208279894
        System.out.println(System.currentTimeMillis());//1604208279972
        //1.静态,可以用类名.方法名直接调用
        //2.作用:衡量算法所用的时间
        long startTime = System.currentTimeMillis();
        for(int i=0;i<10000;i++){
            System.out.println(i);
        }
        long endTime=System.currentTimeMillis();
        
    }

二、.java.util.Date和java.sql.Date
1.区别
java.until.Date:年月日 时分秒
java.sql.Date:年月日
2.联系
java.sql.Date extends java.util.Date
(3)转换
until----->sql

 java.util.Date  date = new java.sql.Date(1604208279972L); //创建util.Date的对象
        //方法一:向下转型
        Date date1=(Date)date;
        //方法二:利用构造器
        Date date2=new Date(date.getTime());

sql---->util

//sql---->util
  java.util.Date date3=d;

String---->sql

 //string--->sqi.Date
 Date date4=Date.valueOf("2019-11-1");

string—>util
a.分解
String—>sql
正常运行

//分解string-->sql.Date
java.sql.Date date=java.sql.Date.valueOf("2020-11-1");

错误

 java.sql.Date date=java.sql.Date.valueOf("2020/11/1");

sql—>util

//sql.Date--->util.Date
        java.util.Date date1=date;

b.直接转换(DateFormat())
日期格式
在这里插入图片描述
日期转换

public abstract class DateFormat extends Format//抽象类不可以创建对象

标准格式化

 DateFormat df=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

String—>Date 【parse 方法】

try {
          Date d=df.parse("2020/11/01 14:50:23");
          System.out.println(d);
        } catch (ParseException e) {
          e.printStackTrace();
        }

Date—>String 【format 方法】

 //date-->String
        //自定义格式
        String format = df.format(new Date());
        System.out.println(format);
        //非自定义格式
        Date date=new Date();
        System.out.println(date.toString());
        System.out.println(date.toLocaleString());
        System.out.println(date.toGMTString());

三、Calender
1.创建对象

//Calendar是一个抽象类不能直接创建对象
        //Calendar cal=new Calendar();
        // GregorianCalendar extends Calendar是一个抽象类
        Calendar cal=new GregorianCalendar();
        Calendar cal2=Calendar.getInstance();
        System.out.println(cal);
        //outjava.util.GregorianCalendar[time=1604231355312,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=10,WEEK_OF_YEAR=45,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=306,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=49,SECOND=15,MILLISECOND=312,ZONE_OFFSET=28800000,DST_OFFSET=0]

2.常用方法
get方法,传入参数:calender中定义的常量

System.out.println(cal.get(Calendar.YEAR)); System.out.println(cal.get(Calendar.MONTH));
System.out.println(cal.get(Calendar.DATE));
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
System.out.println(cal.getActualMaximum(Calendar.DATE));//获取当月日期最大的天数
System.out.println(cal.getActualMinimum(Calendar.DATE));//获取当月日期的最小天数

输出:
在这里插入图片描述

set方法

       //set方法
        cal.set(Calendar.DATE,23);
        cal.set(Calendar.MONTH,10);
        cal.set(Calendar.YEAR,2020);
        System.out.println(cal);
        //java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=10,WEEK_OF_YEAR=45,WEEK_OF_MONTH=1,DAY_OF_MONTH=23,DAY_OF_YEAR=306,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=49,SECOND=15,MILLISECOND=312,ZONE_OFFSET=28800000,DST_OFFSET=0]

3.转换String—>calendar

//String--->Calendar
//string--->sql.date
java.sql.Date date=java.sql.Date.valueOf("2020-11-1");
//sql.date--->calendar
cal.setTime(date);
System.out.println(cal);

四、打印日历

 public static void main(String[] args) {
       //String--->calendar
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你想要查看的日期:(提示:请按照例如2010-11-1格式书写)");
        String strDate = sc.next();
        //System.out.println(strDate);

        //String-->Calendar
        //String-->Date
        java.sql.Date date=java.sql.Date.valueOf(strDate);
        //date-->calendar
        Calendar cal=Calendar.getInstance();
        cal.setTime(date);
        
        //星期提示
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        //获取本月的最大天数
        int maxDay = cal.getActualMaximum(Calendar.DATE);
        //定义一个计数器
        int count=0;
        //获取现在为几号
        int nowDay = cal.get(Calendar.DATE);

        //将日期调为该月的第一天
        cal.set(Calendar.DATE,1);
        //获取这个月的一号时一周的第几天
        int number = cal.get(Calendar.DAY_OF_WEEK);
        //前面的空格数
        int day=number-1;
        //打印空格
        for (int i = 0; i <day ; i++) {
            System.out.print("\t");
        }
        count=count+day;
        //从一号开始到maxDay遍历
        for (int i = 1; i <= maxDay ; i++) {
            if(i==nowDay){
                System.out.print(i+"*"+"\t");
            }else{
                System.out.print(i+"\t");
            }
            count++;
            if(count%7==0){
                System.out.println();
            }

        }
    }

在这里插入图片描述
五、JDK1.8

 //1.完成实例化
    //方法1:now();获取当前的日期,时间,日期时间
    public static void main(String[] args) {
        LocalDate localDate=LocalDate.now();
        System.out.println(localDate);
        LocalTime localTime=LocalTime.now();
        System.out.println(localTime);
        LocalDateTime localDateTime=LocalDateTime.now();
        System.out.println(localDateTime);
    //方法2:of()设置指定的日期,时间,日期时间
        LocalDate of = localDate.of(2020, 5, 20);
        LocalTime of1 = localTime.of(20, 13, 56);
        LocalDateTime of2 = localDateTime.of(2020, 12, 23, 20, 23, 34);
        System.out.println(of);
        System.out.println(of1);
        System.out.println(of2);
    //localDateTime使用较多
        System.out.println(localDateTime.getYear());
        System.out.println(localDateTime.getMonth());
        System.out.println(localDateTime.getDayOfMonth());
        System.out.println(localDateTime.getMonthValue());//11
        System.out.println(localDateTime.getDayOfYear());
        localDateTime.getHour();

    //    一系列常用的with方法
        LocalDateTime localDateTime1 = localDateTime.withMonth(11);
        localDateTime.withHour(21);
        System.out.println(localDateTime);
        System.out.println(localDateTime1);
     //提供了加减操作
     //加
        LocalDateTime localDateTime2 = localDateTime.plusYears(23);
        System.out.println(localDateTime);
        System.out.println(localDateTime2);
     //减
        LocalDateTime localDateTime3 = localDateTime.minusDays(2);
        System.out.println(localDateTime);
        System.out.println(localDateTime3);

六、DateTimeFormatter

格式化类:DateTimeFormatter
    public static void main(String[] args) {
        //方式一:预定义标准格式
        DateTimeFormatter df1=DateTimeFormatter.ISO_DATE_TIME;
        //df1帮助完成localDateTime与String类型之间的转换
        //localDateTime--->String
        LocalDateTime now=LocalDateTime.now();
        String str=df1.format(now);
        System.out.println(str);
        //string-->localDateTime
        TemporalAccessor parse = df1.parse("2020-11-03T21:09:34.822");
        System.out.println(parse);

        //方式二:本地化相关格式  oflocalizedDateTime();
        //参数:FormatStyle.LONG/FormatStyle.MEDIUM/FormatStyle.SHORT
        //FormatStyle.LONG:2020年11月3日 下午09时24分46秒
        //FormatStyle.MEDIUM:2020-11-3 21:27:41
        //FormatStyle.SHORT:20-11-3 下午9:28
        DateTimeFormatter df2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
        //LocalDateTime-->string
        LocalDateTime now1 = LocalDateTime.now();
        String str2 = df2.format(now1);
        System.out.println(str2);

        //string--->localDateTime
        TemporalAccessor parse1 = df2.parse("2020年11月3日 下午09时22分33秒");
        System.out.println(parse1);

        //方式三:自定n义形式 ofPatter("yyyy-mm-dd hh:mm:ss")
        DateTimeFormatter df3 = DateTimeFormatter.ofPattern("yyy-MM-dd hh:mm:ss");
        //localDateTime-->String
        LocalDateTime now2 = LocalDateTime.now();
        String format = df3.format(now2);
        System.out.println(format);
        //String-->localDateTime
        TemporalAccessor parse2 = df3.parse("2020-11-03 09:39:14");
        System.out.println(parse2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值