zoukankan      html  css  js  c++  java
  • java日期处理一(Calendar,Date) .

    Time  bTime=Time.valueOf("00:00:00");//只是记录时间,跟日期没关系.打印出来也是 00:00:00
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                        Calendar  iCalendar=Calendar.getInstance();
                        iCalendar.clear();
    System.out.println( sdf.format(iCalendar.getTime())+"
    " );//1970-01-01


    (注意)另外一篇介绍时间 日期的帖子

       虽然我们当我们使用日期时经常会想到使用Date类来表示,但是仔细查看Date类的方法,发现很多都已过时了,当我们想拿到或设置Date的年月日时分秒,那怎么办呢?

    一、创建日期对象
            所以Java提供了另一功能更加强大的Calendar,我们使用Calendar就可以了。

             比如Date nowDate = new Date();可以用Calendar now = Calendar.getInstance();这样子可以拿到一个当前时间的Calendar对象(当然可以再用now.setTime(nowDate)来用某个Date指定这个Calendar时间),调用now.getTime()就可以拿到Date对象,调用now.getTimeInMills()可以拿到long类型的毫秒数,调用now.get(Calendar.YEAR)、now.get(Calendar.DAY_OF_MONTH)等就可以拿到年月日时分秒,Calendar.YEAR,Calendar.MONTH就是field字段,设置时间的时候就可以用now.set(field,value)来设定,当然也可以用封装好的now.set(year,month,day)来设置。 

    二、格式化

          当我们需要对Date、Calendar、Timestamp做格式化的时候就可以用SimpleDateFormat sdf = new SimpleDateFormat("yyyy年-MM月-dd日-E hh:mm:ss");

          然后sdf.format(Date)

              sdf.format(Calendar.getTime())

              sdf.format(Timestamp),这样就能按效果格式化时间格式了。

    三、日期比较先后

          两个Date类型的比较可以用Date.after()与Date.before()或Date.compareTo()来比较时间先后。

    总结:拿到Date年月日时分秒应该用这个Date来构造一个Calendar对象然后再来拿,至于格式化就用sdf就行了。


    将"yyyy-mm-dd"格式的字符串转换为java.sql.Date:

    SimpleDateFormat bartDateFormat =   new SimpleDateFormat("yyyy-MM-dd");  
    String dateStringToParse = "2007-7-12";  
    try{  
           java.util.Date date = bartDateFormat.parse(dateStringToParse);  
           java.sql.Date sqlDate = new java.sql.Date(date.getTime());
           System.out.println(sqlDate.getTime());  
     
    catch (Exception ex) {  
         System.out.println(ex.getMessage());  
    }

     

    java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.Timestamp区别和联系:

     

    在java有关的项目开发工作中,我们常常要java.util.Date,  java.util.Calendar,   java.sql.Date,    java.sql.Time,   java.sql.Timestamp等几个类进行日期的处理和分析,那么这几个函数之间有什么样的联系,它们又有什么区别呢?

    首先来说说它们之间的关系,

    java.util.Date这个类是java.sql.Date,  java.sql.Time,  java.slq.Timestamp这三个类的父类。这三个类对java.util.Date类进行了包装。

    java.sql.Date类屏蔽了java.util.Date类的时间有关的方法(形如:hh:mm:ss),因此,不可以通过这个类访问时间有关的信息,比如,如果你通过sqlDate.getHour()方法去访问小时信息,此方法会抛出一个IllegalArgumentException异常。这是因为java.sql.Date在继承java.util.Date类的时候对父类进行了重写,禁用了时间访问的方法。之所以这么处理,是为了和数据库的Date数据类型相匹配,数据库的Date数据类行只是保存日期有关的字段。

    Java.sql.Time屏蔽了java.util.Date的日期有关的字段(形如:yyyy-MM-dd),因此,不能通过这个类访问日期有关的信息,比如:如果你通过sqlTime.getYear()方法去获取年有关的信息,此方法会抛出一个IllegalArgumentException异常。这是因为java.sql.Time在继承java.util.Date类的时候对父类进行了重写,禁用了日期访问的方法。之所以这么处理,是为了和数据库的Time数据类型相匹配,数据库的Time数据类行只是保存时间有关的字段。

    Java.sql.Timestamp字段则对java.util.Date这个类进行了扩充,它在java.util.Date类的基础上增加了毫秒的时间访问控制,因此,你可以通过getNanos()(毫微秒)方法去获取时间的毫微秒数(注意此处获取的时间是以毫微秒为单位的,1秒等于十亿毫微秒),同样的,这也是为了和数据库中的Timestamp数据类型进行匹配。

    理清了上述四个类的关系,那么java.util.Date和java.util.Calendar类有什么关系呢?

    Java.util.Calendar类是java.util.Date类的一个更加深入,更加全面的替代。Java.util.Calendar类支持java.util.Date的所有功能,此外,Calendar还引入了多语言,多区域的特性,可以根据需要获取不同区域,不同时区的时间,Calendar还增加了比Date更加方便和快捷的许多操作,如获取一年当中的第几个星期,各个月的天数等便捷的方法。

    Java.util.Calendar区别与java.util.Date的几个地方也需要注意一下:首先,Calendar增加了毫秒的时间段,通过它可以获取时间点的毫秒值,而java.util.Date只是精确到秒。其次,Calendar过去年的时候是当前年份比如:2010,而Date获取年份的时获取到的是当前年份-1900的一个值(2010-1900=110,因此,你调用getYear后过去的值就是110)。最后Calendar是一个抽象类,之所以能够实例化,是因为此处的Calendar充当了一个类似于工厂的作用,在getInstance方法中实例化了Calendar子类GregorianCalendar,并把它返回给客户使用。

  • 相关阅读:
    严重: Parse error in application web.xml file at jndi:/localhost/ipws/WEBINF/web.xml java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml
    Failed to install .apk on device 'emulator5554': timeout解决方法
    java.lang.NoClassDefFoundError:org.jsoup.Jsoup
    Conversion to Dalvik format failed: Unable to execute dex:解决方法
    apache Digest: generating secret for digest authentication ...
    Description Resource Path Location Type Project has no default.properties file! Edit the project properties to set one.
    android service随机自启动
    MVC3 安装部署
    EF 4.3 CodeBased 数据迁移演练
    SQL Server 2008开启sa账户
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254435.html
Copyright © 2011-2022 走看看