zoukankan      html  css  js  c++  java
  • java常用类(2)

    三、时间处理相关类

    Date类:计算机世界把1970年1月1号定为基准时间,每个度量单位是毫秒(1秒的千分之一),用long类型的变量表示时间。

    Date分配Date对象并初始化对象,以表示自从标准基准时间(称为“历元”(epoch),即1970年1月1日08:00:00GMT)以来的指定毫秒数。

    示例:

    package cn.tanjianjie.test;
    import java.util.Date;
    /**
    * 测试Date类的常见用法
    */
    public class TestDate {
    public static void main(String[] args){
    //获得当前电脑时刻
    Date d=new Date();
    System.out.println(d);

    //获得毫秒数
    Date d1=new Date(2000);
    System.out.println(d1);

    System.out.println(d.getTime());//返回自1970年1月1日08:00:00GMT以来此Date对象表示的毫秒数

    Date d2=new Date();
    System.out.println(d2.getTime());
    System.out.println(d2.after(d));//d2>d=true;d2<d=false

    Date d3=new Date(2020-1900,3,10);//表示2020年4月10日
    System.out.println(d3);
    }
    }
    运行结果:

    DateFormat类的作用:

    把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。
    DateFormat是一个抽象类,一般使用它的子类SimpDateFormat类来实现。

    示例:
    package cn.tanjianjie.test;
    import java.text.ParseException;
    import java.util.Date;
    import java.text.SimpleDateFormat;

    public class DateFormat {
    public static void main(String[] args) throws ParseException {
    //把时间对象按照“格式字符串指定的格式”转换成相应的字符串
    SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String str=df.format(new Date(4000000));
    System.out.println(str);

    //把字符串对象按照“格式字符串指定的格式”转换成相应的时间对象
    SimpleDateFormat df2= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Date date=df2.parse("2019-01-26 10:30:34");
    System.out.println(date);
            //输出今天是这个月中第几天
    SimpleDateFormat df3= new SimpleDateFormat("D");
    String str3=df3.format(new Date());
    System.out.println(str3);
        }
    }
    运行结果:

    Calender日历类:

    Calender类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示与计算。

    GregorianCalender是Canlender的一个子类,提供了世界上大多数国家、地区使用的标准日历系统。

    注意:月份的表示,一月为0,二月为1,以此类推十二月为11。

    示例:

    package cn.tanjianjie.test;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;

    public class TestCalendar {
    public static void main(String[] args) {
    //获得日期相关元素
    Calendar calendar = new GregorianCalendar(2019, 1, 26, 10, 30, 34);
    int year = calendar.get(calendar.YEAR);
    int month = calendar.get(calendar.MONTH);
    int day = calendar.get(calendar.DATE);//也可以使用DAY_OF_MONTH.
    int weekday = calendar.get(calendar.DAY_OF_WEEK);//星期几。1-7.1表示星期天,2表示星期一,以此类推7表示星期六

    System.out.println(year);
    System.out.println(month);
    System.out.println(day);
    System.out.println(weekday);

    //设置日期相关元素
    Calendar c2 = new GregorianCalendar();
    c2.set(Calendar.YEAR, 2019);
    System.out.println(c2);

    //日期的计算
    Calendar c3 = new GregorianCalendar();
    c3.add(Calendar.DAY_OF_WEEK, -2);//星期中往前两天
    System.out.println(c3);

    //日期对象和时间对象的转化
    Date d4 = c3.getTime();
    Calendar c4 = new GregorianCalendar();
    c4.setTime(new Date());//时间对象转化成日期对象

    printCalendar(c4);
    }
    public static void printCalendar(Calendar c){
    //打印:2019年01月26日 11:23:29 周六
    int year=c.get(Calendar.YEAR);
    int month=c.get(Calendar.MONTH);
    int date=c.get(Calendar.DAY_OF_MONTH);
    int dateweek=c.get(Calendar.DAY_OF_WEEK);
    String dayweek2=dateweek==0?"日":dateweek+"";
    int hour=c.get(Calendar.HOUR);
    int minute=c.get(Calendar.MINUTE);
    int second=c.get(Calendar.SECOND);

    System.out.println(year+"年"+month+"月"+date+"日"+hour+"时"+minute+"分"+second+"秒"+" 周"+dayweek2);
    }
    }
    运行结果:

    可视化日历程序练习:

    package cn.tanjianjie.test;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.Scanner;

    /**
    * 可视化日历程序
    * @author Gsan
    */
    public class TestCalendar2 {
    public static void main(String[] args) throws ParseException {
    System.out.println("格式为:2019-2-6");
    Scanner scanner=new Scanner(System.in);
    String str=scanner.nextLine();

    SimpleDateFormat df=new SimpleDateFormat("yyy-MM-dd");
    Date date=df.parse(str);//把字符串对象转换成时间对象
    Calendar c=new GregorianCalendar();//获得日期元素
    c.setTime(date);

    System.out.println("日 一 二 三 四 五 六");

    int day=c.get(Calendar.DAY_OF_MONTH);//获得日期
    int days=c.getActualMaximum(Calendar.DATE);//取到最大一天,防止后面接下一月的最大天数

    c.set(Calendar.DAY_OF_MONTH,1);

    //日历前面的空格,方便接上一个月
    for(int i=0;i<c.get(Calendar.DAY_OF_WEEK)-1;i++){
    System.out.print(" ");
    }

    for(int i=1;i<=days;i++){//获得一个月的时间29就是29,28就是28,30就是30,31就是31
    if(day==c.get(Calendar.DAY_OF_MONTH)){//当天加*号
    System.out.print(c.get(Calendar.DAY_OF_MONTH)+"* ");
    }else{
    System.out.print(c.get(Calendar.DAY_OF_MONTH)+" ");
    }
    if(c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
    System.out.println();//换行
    }
    c.add(Calendar.DAY_OF_MONTH,1);//每打印一次就加一
    }
    }
    }

    运行结果:

    
    
    
    


    
    
    
    
    
    


  • 相关阅读:
    Chap-6 6.1~6.3 程序装载
    X Window基础二(转)
    X Window基础一(转)
    Linux基础命令 su与sudo的区别
    Chap-4 Section 4.6 链接控制过程
    Chap-4 Section 4.5 静态库链接
    ceph的CRUSH数据分布算法介绍
    使用ffmpeg捕获USB外部摄像头视频流
    使用ffserver实现转发实时流媒体(摄像头捕获)
    内存映射文件(专门读写大文件)
  • 原文地址:https://www.cnblogs.com/Gsan/p/10325446.html
Copyright © 2011-2022 走看看