一、java中日期类之间的关系:

其中:
1):java.sql.Date、java.sql.Time和java.sql.Timestamp这三个类是专门和数据库打交道的,它们都是java.util.Date的子类。

java.sql.Date继承了java.util.Date的日期部分(年月日)。
java.sql.Time继承了java.util.Date的时间部分(时分秒)。
java.sql.Timestamp全部继承了java.util.Date(年月日时分秒毫秒)。
2):对于日期的格式化我们使用java.text.DateFormat,我们最常用的是使用
它的子类java.text.simpleDateFormat。
3):如果想知道已知的Date是一年中的第一天、一月中的第几日、一周中的星期几等等。即这是我们要知道已知Date的日历。我们可以使
用java.util.Caleadar类处理。对已处理各种各样时区的日历,我们需要使用java.util.GregorianCalendar类
(格林威治日历)。

4):如果我们已经知道了当前时区的Calendar,想知道其他时区的Calendar,这时我们就需要java.util.Timezone类。即使用Calendar类的

setTimeZone(TimeZone
value)
方法。

二、从数据库中获取日期

1、将从数据库中得到日期格式化为自定义的日期格式

   //此处从数据库得到的date是java.sql.Date类型(只保存了日期信息
   Date sendDate =
rs.getDate("send_date");
   SimpleDateFormat sdf =
new  
SimpleDateFormat("yyyy年MM月dd日");
  
System.out.println(sdf.format(sendDate));
 
 //结果样式为:2012年09月26日
######################################################

 如果我们想获取时间信息,将上面的

new  
SimpleDateFormat("yyyy年MM月dd日")改为:
new SimpleDateFormat("HH小时mm分钟ss秒")
那么结果样式始终为:00小时00分钟00秒
这是因为
java.sql.Date类型只保存了日期的信息(年月日)没有保存时间信息(时分秒)
 2.从数据库中得到日期中获取具体的年或月或日

//此处从数据库得到的date是java.sql.Date类型
   
   Date sendDate =
rs.getDate("send_date");
   
   //得到当前时间的日历
   
    Calendar cal
= Calendar.getInstance();
   
  
//将从数据库中得到的date转为Calendar,setTime(arg)方法中的参数是java.util.Date类型,而java.sql.Date是java.util.Date的子类

cal.setTime(sendDate);
   
   //得到具体的月(这里的月是从0开始的)
   
   int month =
cal.get(Calendar.MONTH);
   
  
System.out.println(month+1);

3、将从数据库中得到日期格式化为自定义的时间格式
//此处从数据库得到的date是java.sql.Timestamp类型(日期和时间信息都保存了)
   
   
      
Timestamp sendDate = rs.getTimestamp("send_date");
   
   
   
   SimpleDateFormat sdf = new
SimpleDateFormat("HH小时mm分钟ss秒");
   
   
   
  
System.out.println(sdf.format(sendDate));
--------------------------------------------------------
或者
//此处从数据库得到的date是java.sql.Time类型(只保存了时间信息
   
   
   
   Time sendDate =
rs.getTime("send_date");
   
   
   
   SimpleDateFormat sdf = new
SimpleDateFormat("HH小时mm分钟ss秒");
   
   
   
  
System.out.println(sdf.format(sendDate));

//结果样式为:08小时48分钟37秒
 4、得到当前系统的日期时间
   a:将毫秒数换转成日期类型

Long
time=System.currentTimeMillis();
   Date dNow=new
Date(time);
  System.out.println("日期类型:"+dNow);
//当前时间与协调世界时 1970 年 1 月 1
日午夜之间的时间差(以毫秒为单位测量)。通常用在计算程序执行了多长时间。
 
   b:
   java.util.Date date = new java.util.Date();
   //将当前date转为Calendar
   
cal.setTime(date);

//得到具体的月(注意:月是从0开始计算的)
   int month =
cal.get(Calendar.MONTH);
//Date是java.util.Date包下的,它包含了日期信息和时间信息,由于此类中很多方法都过时了,可以先将Date类型转换为Calendar类型,在获取日期时间信息。

  c:
   Calendar
cal = Calendar.getInstance();
//此calendar是java.util.Calendar包下的,它拥有很多方法可以获取日期和时间信息。

d:取得指定时区的日期时间
   Calendar
japanTime=
new   
GregorianCalendar(TimeZone.getTimeZone("Japan"));   
   
System.out.println(japanTime.get(Calendar.HOUR_OF_DAY));

//结果是:22
说明:TimeZone.getTimeZone("Japan")中Japan是TimeZone的ID,如果你想知道所有可用的TimeZone的ID,可以使用下面的语句获取:

for(String str :TimeZone.getAvailableIDs())
   
   
   
System.out.println(str);
三、将从页面取得的字符串日期转换为日期类型(保存到数据库)

1、 //假设strDate 是从页面得到的日期
   
   String
strDate = "2013-06-13 08:16:30";
   
   Timestamp tm = Timestamp.valueOf(strDate);
   
  
System.out.println(tm);//结果是:2013-06-13 08:16:30.0
    同理:java.sql.Date和java.sql.Time都有valueOf(String
arg)方法

    
2、
       
//假设strDate 是从页面得到的日期
   
    String strDate = "2013-06-13 08:16:30";
   
   
SimpleDateFormat sdf =
new   
SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   
   
java.util.Date date =
sdf.parse(strDate);

   
   
System.out.println(date);
//结果是:Thu Jun 13 08:16:30 CST 2013

时间格式语法:

使用一个 time pattern 字符串指定时间格式。 在这种方式下,所有的 ASCII
字母被保留为模式字母,定义如下:

符号    
含义                  
表示               
示例
------  
-------              
------------       
-------
G       
年代标志符             
(Text)             
AD
y       
年                     
(Number)           
1996
M       
月                   
(Text &
Number)    
July & 07
d       
日                     
(Number)           
10
h       
时 在上午或下午 (1~12) 
(Number)           
12
H       
时 在一天中
(0~23)     
(Number)           
0
m       
分                     
(Number)           
30
s       
秒                     
(Number)           
55
S       
毫秒                   
(Number)           
978
E       
星期                   
(Text)             
Tuesday
D       
一年中的第几天         
(Number)           
189
F       
一月中第几个星期几     
(Number)     
2(2nd Wed inJuly)
w       
一年中第几个星期       
(Number)           
27
W       
一月中第几个星期       
(Number)           
2
a       
上午 / 下午
标记符     
(Text)             
PM
k       
时 在一天中
(1~24)     
(Number)           
24
K       
时 在上午或下午 (0~11) 
(Number)           
0
z       
时区                 
(Text)   
Pacific Standard Time
'       
文本转义符             
(Delimiter)
''      
单引号                 
(Literal)          
'

模式字母的数目决定了格式。

下面使一些实例:

格式化模式                            
结果
--------------                        
-------
"yyyy.MM.dd G 'at' hh:mm:ss
z"   
->>  1996.07.10 AD
at 15:08:56 PDT
"EEE, MMM d,
''yy"               
->>  Wed, July 10,
'96
"h:mm
a"                         
->>  12:08 PM
"hh 'o''clock' a,zzzz"->>12 o'clock
PM,Pacific Daylight Time
"K:mm a,
z"                      
->>  0:00 PM,
PST
"yyyyy.MMMMM.dd GGG hh:mm aaa"  
->> 1996.July.10 AD 12:08 PM

更多精彩请参阅:Java日期格式化及其使用例子收集

JavaSE中日期处理的更多相关文章

  1. JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序

    前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...

  2. [转]JDBC中日期时间的处理技巧

    Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...

  3. JavaScriptSerializer中日期序列化问题解决方案

    JavaScriptSerializer中日期序列化问题解决方案 直接进入主题: class Student { public int age { get; set; } public DateTim ...

  4. PostgreSQL 中日期类型转换与变量使用及相关问题

    PostgreSQL中日期类型与字符串类型的转换方法 示例如下: postgres=# select current_date; date ------------ 2015-08-31 (1 row ...

  5. Java 中日期的几种常见操作 —— 取值、转换、加减、比较

    Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提 ...

  6. sql语句中日期时间格式化查询

          今天在做会员管理系统搜索时,我发现以前的搜索时间方式不太科学,效率也不是太高.由其是在查询指定的时间相等的时候,我在数据库中都存这样的时间格式"2007-5-22 14:32:1 ...

  7. SQL语句中日期的计算方法大全

    sql语句中的日期处理一.日期處理函數1.日期增減函數 dateadd(datepart,number,dtae) datepart:是規定應向日期的哪一部分返回新值的參數.下列是sql server ...

  8. JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue

    前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的 ...

  9. JavaSE中Map框架学习笔记

    前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...

随机推荐

  1. Android客户端面试题集锦

    声明:本文问题来自但不限于Xoper.ducky大牛的面试总结,网址:http://www.nowcoder.com/discuss/3043,欢迎各位进行补充 JAVA SE 1. 九种基本数据类型 ...

  2. easyui datagrid 表格动态隐藏部分列的展示

    1.一套代码中,可能不同的项目情况都在用,但是可能不同的项目要求展示的datagrid列的内容并不一致,所以能够动态的显示部分datagrid列的内容. 即datagrid的中的某一列,这个项目要求显 ...

  3. (转载)如何学好iphone游戏开发

    转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...

  4. ubuntu 安装ODOO时的python的依赖

    sudo apt-get install graphviz ghostscript postgresql-client python-dateutil python-feedparser python ...

  5. MFC 带Ribbonbar的窗口 实现全屏和取消全屏

    void CMainFrame::FullScreen(){    m_wndRibbonBar.ShowWindow(SW_HIDE);//隐藏工具栏         m_wndStatusBar. ...

  6. MongoDB分片集群节点状态stateStr:RECOVERING解决

    1.关闭一直处于RECOVERING状态的mongodb server /opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongo  127.0.0.1:220 ...

  7. 如何使用awk的比较操作符

    对于使用 awk 命令的用户来说,处理一行文本中的数字或者字符串时,使用比较运算符来过滤文本和字符串是十分方便的.下面的部分我们介绍"awk"的比较运算符. awk 中的比较运算符 ...

  8. 【实践】js实现windows系统日历

    思路:1.定义好每一个月份的日期天数 2.获取当前的系统日期初始化数据 3.输出日历    2.1.先获取当前月的第一天是星期几(这一点与日历的排版至关重要!)    2.2.获取当前月的天数    ...

  9. ispy 编译笔记

    xcopy "$(ProjectDir)dlls\$(PlatformName)\*.*" "$(ProjectDir)$(OutDir)" /Y if NOT ...

  10. .css()与.addClass()设置样式的区别

    对于样式的设置,addClass与css方法两者之间有什么区别? 可维护性: .addClass()的本质是通过定义个class类的样式规则,给元素添加一个或多个类.css方法是通过JavaScrip ...