`
itoracja
  • 浏览: 136794 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

日期&日期格式&日历

    博客分类:
  • java
阅读更多
    在项目开发工作中,日期是商业逻辑计算一个要害的部分.
因此,开发者必须能够计算未来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象.
而在java中,calendar(日历),date(日期), 和dateformat(日期格式)组成了java标准的一个基本但是非常重要的部分.
因此在进行日期的处理和分析常用到下面几个类:
 
1.日期 
父类:java.util.date
子类:java.sql.date,    java.sql.time,   java.sql.timestamp
 
   (1) 先来说说它们之间的关系,java.util.date这个类是java.sql.date,  java.sql.time,  java.slq.timestamp
          这三个类的父类。这三个类对java.util.date类进行了包装。
 
   (2) java.util.date
          date类可以用于获得特定的瞬间,精确到毫秒的日期值;
         
          在 jdk 1.1 之前,类 <code>date</code> 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。
             它也允许格式化和解析日期字符串。不过,这些函数的 api 不易于实现国际化。
              从 jdk 1.1 开始,应该使用 <code>calendar</code> 类实现日期和时间字段之间转换,
                                              使用 <code>dateformat</code> 类来格式化和解析日期字符串。
             <code>date</code> 中的相应方法已废弃。尽管date大部分方法已经过时,但date类并没有过时,我会在另外的文章介绍
             date的具体使用,当然也可以查看api文档。             
 
   (3) java.sql.date类
         一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 jdbc 将毫秒值标识为 sql <code>date</code> 值。
         即主要用于将 jdbc 日期转义形式的字符串转换成 <code>date</code> 值,其它大部分方法已经过时。
        
         隐藏了java.util.date类 的时间有关的方法(形如:hh:mm:ss),因此,不可以通过这个类访问时间有关的信息,
           比如:
              如果你通过sqldate.gethour()方法去访问小时信息,此方法会抛出一个illegalargumentexception 异常。
              这是因为java.sql.date在继承java.util.date类的时候对父类进行了重写,禁用了时间访问的方法。
              之所以这么处理,是为了和数据库的date数据类型相匹配,数据库的date数据类行只是保存日期有关的字段。
 
   (4) java.sql.time类
          隐藏了java.util.date的日期有关的字段(形如:yyyy-mm-dd),因此,不能通过这个类访问日期有关的信息
            比如: 
          如果你通过sqltime.getyear()方法去获取年有关的信息,此方法会抛出一个illegalargumentexception 异常。
                这是因为java.sql.time在继承java.util.date类的时候对父类进行了重写,禁用了日期访问的方法。
                之所以这么处理,是为了和数据库的time数据类型相匹配,数据库的time数据类行只是保存时间有关的字段。
 
   (5) java.sql.timestamp类
           则对java.util.date这个类进行了扩充,它在java.util.date类的基础上增加了毫秒的时间访问控制,因此,
           你可以通过getnanos()方法去获取时间的毫微秒数
                      (注意此处获取的时间是以毫微秒为单位的,1秒等于十亿毫微秒),
           同样的,这也是为了和数据库中的timestamp数据类型进行匹配。
 
2.日历 
父类:java.util.calendar (抽象类)
子类:java.util.gregoriancalendar
 
  (1) java.util.calendar类
           是java.util.date类的一个更加深入,更加全面的替代。java.util.calendar类支持java.util.date的所有功能,
              此外,calendar还引入了多语言,多区域的特性,可以根据需要获取不同区域,不同时区的时间,
              calendar还增加了比date更加方便和快捷的许多操作,
              如获取一年当中的第几个星期,各个月的天数等便捷的方法。
 
  (2)java.util.gregoriancalendar 类
            <span style="font-family: courier new;">gregoriancalendar</span> 是 <code>calendar</code> 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
 
  (3)java.util.calendar区别与java.util.date的几个地方也需要注意一下:
          首先,  calendar增加了毫秒的时间段,通过它可以获取时间点的毫秒值,而java.util.date只是精确到秒。
 
          其次,  calendar过去年的时候是当前年份比如:2010,而date获取年份的时获取到的是当前年份-1900的
                       一个值(2010-1900=110,因此,你调用getyear后过去的值就是110)。
 
          最后,  calendar是一个抽象类,之所以能够实例化,是因为此处的calendar充当了一个类似于工厂的作用,
                       在getinstance方法中实例化了calendar子类gregoriancalendar,并把它返回给客户使用。
 
 
3.日期格式
父类:java.text.dateformat (抽象类)
子类:java.text.simpledateformat 
 
 
 
  
 
0
4
分享到:
评论

相关推荐

    LPL&amp;LCK赛程订阅日历.zip

    LPL&LCK赛程订阅日历.zipLPL&LCK赛程订阅日历.zipLPL&LCK赛程订阅日历.zipLPL&LCK赛程订阅日历.zipLPL&LCK赛程订阅日历.zipLPL&LCK赛程订阅日历.zipLPL&LCK赛程订阅日历.zipLPL&LCK赛程订阅日历.zipLPL&LCK赛程订阅...

    日历日程表联动layui&amp;tui.calendar

    内含layui日历联动tui.calendar日程表(日、周、月)实例 相关文档: https://nhn.github.io/tui.calendar/latest/Calendar#setCalendars http://layui.itmtr.cn/doc/modules/laydate.html#use ...

    YY万年历_sub_VB源码_万年历_

    一个基于VB 的万年历,万年历日历中显示节日、农历、星座等信息,可前进、后退查看某一天信息。编写时候用到了不少VB类,源码公开,对学习来说相当有参考价值。 Private Sub Image2_Click(Index As Integer) ...

    lhgcalendar时间插件demo

    年 月 日 格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;input type &quot;text&quot; id &quot;c6&quot; onclick &quot;J calendar get {type:&quot; &quot;} ;&quot; &gt;&amp;nbsp;月 日 年 格式 &lt; ...

    电子万年历系统

    用来按规定格式输出一个月的日历 void Search1 void ; 用来显示一年12个月的日历 void Search2 void ; 用来显示某年某个月的日历 void Search3 void ; 用来显示某天是星期几 void main { int select; while 1 ...

    Proteus仿真ds12c887&amp;lcd1602的电子万年历

    Proteus仿真ds12c887&amp;lcd1602的电子万年历,有完全的硬件仿真图及c代码。 Proteus仿真ds12c887&amp;lcd1602的电子万年历,有完全的硬件仿真图及c代码。

    JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子

    JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子

    ASP.Net常用工具类《很全面》

    Cache、CSV文件转换、DEncrypt、FTP操作类、JS、Json、Mime、PDF、Properties、ResourceManager、XML操作类、弹出消息类、导出Excel、分词辅助类、汉字转拼音、配置文件操作类、日历、上传下载、时间操作类、视频...

    flash生日提醒器(修正闰年问题)

    如果您是一名在读的学生 特别是一名生活委员时 您是否会为了确定同学的生日而查日历 特别是农历 而感到特别繁琐 如果您将是一名快要毕业的学生 你是否想在毕业之后几年后 仍能记住上学时同学的面孔 如果您是一位拥有...

    Fire IPBS v1.0.4 Build 041226

    v2.0.3 的部分仍然存在的问题&amp;BUG,支持在任何编码的服务器上使用本论坛而且绝对不会有乱码问题  v1.0.4 Build 041220更新:  修正语言包错误(lang/cn/lang_ucp.php,lang/cn/lang_post.php)  集成后台高级...

    键盘和显示电路和日历时钟和存储电路

    键盘和显示电路如下图所示,由键盘电路和液晶显示电路两部分组成。液晶显示电路采用ZJM12864BSBD,这是一款低功耗的点阵图形式LCD,显示格式为128点(列)&amp;times;64点(行),具有多功能指令,很容易与MPU相连。

    xiunoBBS论坛系统 v1.0.2GBK

    XiunoBBS是北京莱特凯得网络技术有限公司出品的一套面向千万级数据量设计的论坛软件,基于PHP&amp;...11.编译模板加入了对特效的支持,符合格式的显示层的代码会被自动翻译为特效代码,针对View层这些是透明的。

    LevenBlog v2.0.12 博客系统带

    3.支持Blog标准特性(自动Tag系统,评论,Track,Rss&amp;ATOM订阅,固定链接) 4.支持URLRewrite,更友好的url,更易于搜索引擎收录 5.全HTML模板提供,任何人可以定制Blog前台所有界面.同时HTML模板系统更适合国人的开发...

    dotproject中文

    DotProject是一个基于AMP(apache+mysql+php)的开源项目管理...最近需要一个项目管理软件,于是就下载DotProject进行了试用,感觉不错,但有中文有乱码问题,如:日历和gantt图。现就对解决DotProject乱码进行一下总结

    Mea-familia:Mea-family是家庭管理应用程序-开源

    -通过日历管理日常生活的各个方面,可以管理待办事项,一周中的菜单,食谱,购物清单...-通过书籍,CD,DVD管理爱好,视频游戏库。 Mea-familia目前提供法语和英语版本。 通过网络浏览器可以访问Mea系列。 Mea-...

Global site tag (gtag.js) - Google Analytics