zoukankan      html  css  js  c++  java
  • Java中关于Date等日期类的简单使用

    Date

    Date类不常用,很多方法被废弃了,常用它的两个构造方法来new一个Date对象。

    Date d1 = new Date();   //不传任何参数,代表当前时间点
    System.out.println(d1);
    
    //输出
    Sat Jul 13 09:51:50 CST 2019
    //在Java中以1970年1月1日 00:00:00为时间原点,由于时区问题,祖国时间是8:00:00
    Date d2 = new Date(4000);   //传入一个long型数值,表示在时间原点之后
    System.out.println(d2);
    
    //输出,时间过了4秒
    Thu Jan 01 08:00:04 CST 1970
    SimpleDateFormat
    DateFormat是一个抽象类,常用它的子类SimpleDateFormat;作用:作为Date对象和String对象的中介,用于Date对象和String对象的相互转换。
    //Date对象转换为String对象
    DateFormat d3 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");   //定义日期格式,其中y、M、d、h、m、s等都代表固定的含义,可以参考API文档
    String str = d3.format(new Date());
    System.out.println(str);
    
    //输出
    2019年07月13日 10:16:37
    //String对象转换为Date对象
    DateFormat d4 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");   //定义日期格式
    Date date = d4.parse("1997年2月20日 19:20:40");
    System.out.println(date);
    
    //输出
    Thu Feb 20 19:20:40 CST 1997

    日期格式参照表

    GregorianCalendar

    Calendar是一个抽象类,常用其子类GregorianCalendar。作用:设置日历信息,得到日历信息,日期计算,和Date对象相互转换。
            Calendar c1 = new GregorianCalendar();  //直接定义默认当前时间点
            c1 = new GregorianCalendar(2018,10,20); //可以具体定义到时分秒
            System.out.println(c1); //直接输出许多信息,可以从里面筛选出日期信息
            //获取信息
            int year = c1.get(Calendar.YEAR);
            int month = c1.get(Calendar.MONTH); //用0-11表示数字,0表示一月,11表示十二月
            int day = c1.get(Calendar.DATE);
            int hour = c1.get(Calendar.HOUR);
            int minute = c1.get(Calendar.MINUTE);
            int seconds = c1.get(Calendar.SECOND);
            System.out.println(year+"年"+month+"月"+day+"日 "+hour+":"+minute+":"+seconds);
    
    //输出
    java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=?,YEAR=2018,MONTH=10,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=20,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
    2018年10月20日 0:0:0
            //设置信息
            Calendar c2 = new GregorianCalendar();
            c2.set(Calendar.YEAR,1997);
            c2.set(Calendar.MONTH,2);
            c2.set(Calendar.DATE,20);
    
            //日期的计算
            c2.add(Calendar.YEAR,22);   //往后22年
            System.out.println(c2.get(Calendar.YEAR)+"年"+Calendar.MONTH+"月"+Calendar.DATE+"日");
    
    //输出
    2019年2月5日
            //Calendar对象和Date对象之间的转换
            Calendar c3 = new GregorianCalendar();
            Date date2 = c3.getTime();  //通过getTime转换为Date对象
            System.out.println(date2);
    
            Calendar c4 = new GregorianCalendar();
            c4.setTime(new Date()); //通过setTime转换为Calendar对象

    打印可视化日历的一个简单例子:

    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.Scanner;
    
    public class CalendarTest {
        public static void main(String[] args) throws ParseException {
            Scanner reader = new Scanner(System.in);
            String str = reader.nextLine();
            //获取日期类
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Date date = dateFormat.parse(str);
            Calendar calendar = new GregorianCalendar();
            calendar.setTime(date);
            int currDay = calendar.get(Calendar.DAY_OF_MONTH);
            System.out.println("日		"+"一		"+"二		"+"三		"+"四		"+"五		"+"六		");
            calendar.set(Calendar.DAY_OF_MONTH,1);
            for (int i = 1; i < calendar.get(Calendar.DAY_OF_WEEK); i++) {
                System.out.print("		");
            }
    
            int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);    //本月天数
            for (int i = 0; i < days; i++) {
                if(calendar.get(Calendar.DAY_OF_MONTH)==currDay){
                    System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"*"+"		");
                }else{
                    System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"		");
                }
                if(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
                    System.out.println();
                }
                calendar.add(Calendar.DAY_OF_MONTH,1);  //天数加1
            }
        }
    }
    2000-2-20
    日        一        二        三        四        五        六        
                    1        2        3        4        5        
    6        7        8        9        10        11        12        
    13        14        15        16        17        18        19        
    20*        21        22        23        24        25        26        
    27        28        29    
  • 相关阅读:
    实操记录之-----Ant Design of Vue 增强版动态合并单元格,自动根据数据进行合并,可自定义横纵向合并
    实操好用~~~~~antd 中 Table表格动态合并~~~
    超级容易理解的函数节流(throttle)
    Flask框架
    Celery框架
    redis数据库如何用Django框架缓存数据
    luffyapi项目 --短信认证的基本操作
    DRF之Jwt 实现自定义和DRF小组件及django-filter插件的使用
    Auth主件的(RBAC) 六表
    DRF之三大认证
  • 原文地址:https://www.cnblogs.com/chiweiming/p/11178814.html
Copyright © 2011-2022 走看看