zoukankan      html  css  js  c++  java
  • 使用java.text.SimpleDateFormat类进行文本日期和Date日期的转换

    (转)使用java.text.SimpleDateFormat类进行文本日期和Date日期的转换

    Date类内部既不存储年月日也不存储时分秒,而是存储一个从1970年1月1日0点0分0秒开始的毫秒数,而真正有用的年月日时分秒毫秒都是从这个毫秒数转化而来,这是它不容易被使用的地方,尤其是显示和存储的场合。但Date类的优势在于方便计算和比较。
    另一点,日常生活中我们习惯用年月日时分秒这样的文本日期来表示时间,它方便显示和存储,也容易理解,但不容易计算和比较。
    综上所述,我们在程序中进行日期时间处理时经常需要在在文本日期和Date类之间进行转换,为此我们需要借助java.text.SimpleDateFormat类来进行处理,下文列举了它的几个常用示例。

    SimpleDateFormat函数的继承关系:
    java.lang.Object
       |
       +----java.text.Format
               |
               +----java.text.DateFormat
                       |
                       +----java.text.SimpleDateFormat

    1.将Date转化为常见的日期时间字符串
    这里我们需要用到java.text.SimpleDateFormat类的format方法,其中可以指定年月日时分秒的模式字符串格式。
    Date date = new Date();
    Format formatter = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
    System.out.println("转化的时间等于="+formatter.format(date));
    其中
    yyyy表示四位数的年份
    MM表示两位数的月份
    dd表示两位数的日期
    HH表示两位数的小时
    mm表示两位数的分钟
    ss表示两位数的秒钟

    2.将文本日期转化为Date以方便比较
    文本日期的优势在于便于记忆,容易处理,但缺点是不方便比较,这时我们需要借助SimpleDateFormat的parse方法得到Date对象再进行比较,实例如下:
    String strDate1="2004年8月9日";
    String strDate2="2004年10月5日";

    SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy年MM月dd日");
    java.util.Date date1 = myFormatter.parse(strDate1);

    java.util.Date date2 = myFormatter.parse(strDate2);

    // Date比较能得出正确结果
    if(date2.compareTo(date1)>0){
          System.out.println(strDate2+">"+strDate1);
    }

    // 字符串比较得不出正确结果
    if(strDate2.compareTo(strDate1)>0){
          System.out.println(strDate2+">"+strDate1);
    }


    3.100天后的时间

           // 当前时间
            Date date = new Date();
            SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd");
            String str = formate.format(date);
            System.out.println("当前时间:"+str);
            Calendar c = Calendar.getInstance();
            c.setTime(date);

            // 100天后
            c.add(Calendar.DAY_OF_MONTH, 100);

            System.out.println("100天后时间:"+formate.format(c.getTime()));


    SimpleDateFormat 类字段:
    字母  日期或时间元素  表示  示例 
    G  Era 标志符  Text  AD 
    y  年  Year  1996; 96 
    M  年中的月份  Month  July; Jul; 07 
    w  年中的周数  Number  27 
    W  月份中的周数  Number  2 
    D  年中的天数  Number  189 
    d  月份中的天数  Number  10 
    F  月份中的星期  Number  2 
    E  星期中的天数  Text  Tuesday; Tue 
    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 Time; PST; GMT-08:00 
    Z  时区  RFC 822 time zone  -0800 

  • 相关阅读:
    duilib基本框架
    字典树(Trie Tree)
    如何用java有选择的输入多行文本
    java 接口默认修饰符
    3org.springframework.beans.factory.BeanDefinitionStoreException异常
    mybatis
    大O表示法
    sql in interview for a job
    static
    StringBuffer 和 StringBuilder
  • 原文地址:https://www.cnblogs.com/wyhuang/p/4092634.html
Copyright © 2011-2022 走看看