• 常用类一一时间处理相关类一一java.util.Tomezone(java.util.Calendar , java.util.Date , java.text.DateFormat)


    时间处理相关类

    时间是一个一维的东东。所以,我们需要一把刻度尺来区表达和度量时间。在计算机世界,我们把1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一)。


     

    我们用long类型的变量来表示时间,从基准时间往前几亿年,往后几亿年都能表示。如果想获得现在时刻的“时刻数值”,可以使用:

        long  now1 = System.currentTimeMillis();

    这个“时刻数值”是所有时间类的核心值,年月日都是根据这个“数值”计算出来的。我们工作学习涉及的时间相关类有如下这些:


     

     java.util.Calendar  日历 日期计算用他 (java.util.GregorianCalendar公历,阳历。)

    java.util.Date 核心类 (根本 先学他)

    java.text.DateFormat 时间格式化 完成字符串和时间对象的转化 format   parse

     核心类(java.util.Date)

    Date时间类(java.util.Date)

    在标准Java类库中包含一个Date类。它的对象表示一个特定的瞬间,精确到毫秒。

     Date()分配一个Date对象,并初始化此对象为当前的日期和时间精确到毫秒)。

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

     boolean after(Date when) 测试此日期是否在指定日期之后。 

     booleanbefore(Date when)  测试此日期是否在指定日期之前。

     boolean equals(Object obj) 比较两个日期的相等性。

      long getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

     String toString() 把此 Date 对象转换为以下形式的 String:

    dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun、 Mon、Tue、 Wed、 Thu、 Fri、 Sat)。

    【示例1Date类的使用

     1 package cn.bjsxt.dateclass;
     2 
     3 /** 参照源码
     4  * 测试Date类的用法
     5  */
     6 import java.util.Date;
     7 
     8 public class TestDate {
     9 
    10     /**
    11      * @param args
    12      */
    13     public static void main(String[] args) {
    14         Date d = new Date();
    15         long t = System.currentTimeMillis();
    16         System.out.println(t);
    17         
    18         Date d2 = new Date(1000);
    19         //北京时间
    20         System.out.println(d2);
    21         //国际标准时间  d2.toGMTString()不建议使用,他画了横线 说明 不建议使用 通过注解@Deprecated废弃的  下面写分方法会打上横线
    22         System.out.println(d2.toGMTString());
    23         //set
    24         d2.setTime(2112121);
    25         //get  long类型的值
    26         System.out.println(d2.getTime());
    27         //时间比较
    28         System.out.println(d.getTime()<d2.getTime());
    29         
    30     }
    31 
    32 }
     1 import java.util.Date;
     2 
     3 public class Test {
     4 
     5     public static void main(String[] args) {
     6 
     7        Date date1 = new Date();
     8 
     9        System.out.println(date1.toString());
    10 
    11        long i = date1.getTime();
    12 
    13        Date date2 = new Date(i - 1000);
    14 
    15        Date date3 = new Date(i + 1000);
    16 
    17        System.out.println(date1.after(date2));
    18 
    19        System.out.println(date1.before(date2));
    20 
    21        System.out.println(date1.equals(date2));
    22 
    23        System.out.println(date1.after(date3));
    24 
    25        System.out.println(date1.before(date3));
    26 
    27        System.out.println(date1.equals(date3));
    28 
    29        System.out.println(
    30 
    31            new Date(1000L * 60 * 60 * 24 * 365 *   39L).toString());  //why?
    32 
    33     }
    34 
    35 }

    查看API文档大家可以看到很多方法过时了,JDK1.1之前的Date包含了:日期操作、字符串转化成时间对象,时间对象。 

    JDK1.1之后,日期操作使用:Canlendar类来。 字符串转化:DateFormat。

     时间格式化

    DateFormat类和SimpleDateFormat类

    ·作用

    把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。

    DateFormat是一个抽象类,一般使用SimpleDateFormat类。 

    【示例2DateFormat类和SimpleDateFormat类的使用

     1 public class TestDareFormat {
     2 
     3     /**
     4      * 
     5      * java.text.DateFormat 时间格式化 完成字符串和时间对象的转化 format   parse
     6      * @param args
     7      */
     8     public static void main(String[] args) {
     9         // 格式
    10         DateFormat df = new SimpleDateFormat("yyyy年 MM月dd日  hh:mm:ss,属于本年的第w周,属于本月的第W周");
    11         
    12         Date d = new Date(3323213123L);
    13         //时间对象转成字符串 (按格式化字符串)
    14         String str = df.format(d);
    15         System.out.println(str);
    16         
    17         System.out.println("##################");
    18         //将字符串转换成时间对象
    19         String str2 = "1977-7-7";//需要和下面的格式一致 不一致会报错
    20         DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
    21         //解析 得到时间对象
    22         try {
    23             Date d2 =df2.parse(str2);
    24             System.out.println(d2);
    25         } catch (ParseException e) {
    26             
    27             e.printStackTrace();
    28         }
    29     }
    30 
    31 }
     1 import java.text.ParseException;
     2 
     3 import java.text.SimpleDateFormat;
     4 
     5 import java.util.Date;
     6 
     7 public class Test {
     8 
     9     public static void main(String[] args) throws   ParseException {
    10 
    11         //new出SimpleDateFormat对象
    12 
    13        SimpleDateFormat s1 = new   SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    14 
    15        SimpleDateFormat s2 = new   SimpleDateFormat("yyyy-MM-dd");
    16 
    17  
    18 
    19        //将时间对象转换成字符串
    20 
    21        String daytime = s1.format(new Date());
    22 
    23        System.out.println(s2.format(new Date()));
    24 
    25        System.out.println(new   SimpleDateFormat("hh:mm:ss").format(new Date()));
    26 
    27  
    28 
    29        //将符合指定格式的字符串转成成时间对象.字符串格式需要和指定格式一致。
    30 
    31        String time = "2007-10-7";
    32 
    33        Date date = s2.parse(time);
    34 
    35        System.out.println("date1: " + date);
    36 
    37        time = "2007-10-7 20:15:30";
    38 
    39        date = s1.parse(time);
    40 
    41        System.out.println("date2: " + date);
    42 
    43     }
    44 
    45 }

    表  格式化字符的含义

    字母

    日期或时间元素

    表示

    示例

    G

    Era 标志符

    Text

    AD

    y

    Year

    199696

    M

    年中的月份

    Month

    JulyJul;   07

    w

    年中的周数

    Number

    27

    W

    月份中的周数

    Number

    2

    D

    年中的天数

    Number

    189

    d

    月份中的天数

    Number

    10

    F

    月份中的星期

    Number

    2

    E

    星期中的天数

    Text

    TuesdayTue

    a

    Am/pm 标记

    Text

    PM

    H

    一天中的小时数(0-23)

    Number

    0

    k

    一天中的小时数(1-24)

    Number

    24

    K

    am/pm 中的小时数(0-11)

    Number

    0

    h

    am/pm 中的小时数(1-12)

    Number

    12

    m

    小时中的分钟数

    Number

    30

    s

    分钟中的秒数

    Number

    55

    S

    毫秒数

    Number

    978

    z

    时区

    General   time zone

    Pacific Standard TimePSTGMT-08:00

    Z

    时区

    RFC   822 time zone

    0800

     java.util.Calendar  日历 日期计算用他 (java.util.GregorianCalendar公历,阳历。)

    GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家和地区使用的标准日历系统、

    注意:

    月份:一月是0,二月是1,。。。。十二月是11

    星期:周日是1,周一是2、、、、周六是7

     1 package cn.bjsxt.dateclass;
     2 
     3 import java.util.Calendar;
     4 import java.util.Date;
     5 import java.util.GregorianCalendar;
     6 
     7 public class TestCalendar {
     8 
     9     /**
    10      * @param args
    11      * 时刻和日期的转化
    12      * java.util.Calendar  日历 日期计算用他 (java.util.GregorianCalendar公历,阳历。)
    13      * GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家和地区使用的标准日历系统、
    14      * 注意:
    15      *  月份:一月是0,二月是1,。。。。十二月是11
    16      *  星期:周日是1,周一是2、、、、周六是7
    17      */
    18     public static void main(String[] args) {
    19         //创建日期类对象
    20         Calendar c = new GregorianCalendar();
    21         c.set(2001, 1, 10, 12, 23, 24);
    22         //获得时间的
    23         Date d=c.getTime();
    24         System.out.println(d);
    25         System.out.println(c.get(Calendar.YEAR));
    26         //测试 日期计算
    27         c.add(Calendar.YEAR, 30);
    28         System.out.println(c.get(Calendar.YEAR));
    29 
    30     }
    31 
    32 }
  • 相关阅读:
    JDOM入门实例:读取与创建xml文档
    C++构造函数/析构函数/拷贝构造函数/深拷贝浅拷贝解析
    java类的访问权限
    hive怎样决定reducer个数
    hive Cli常用操作(翻译自Hive wiki)
    hive local hadoop特性
    hive数据操作(翻译自Hive wiki+实例讲解)
    hive的hive.exec.parallel参数说明
    hive数据类型(翻译自Hive Wiki)
    hive 创建/删除/截断 表(翻译自Hive wiki)
  • 原文地址:https://www.cnblogs.com/PoeticalJustice/p/7630196.html
Copyright © 2020-2023  润新知