java.sql.Date和java.util.Date的不同和相互轉換方式

來源:互聯網
上載者:User

標籤:style   blog   http   ar   io   color   os   sp   for   

一:前言

    這是我在新的公司寫的第一份部落格吧,來了又一個星期了吧,但是在來的那幾天我真的很迷茫的感覺這裡是很不適合我的樣子,而且我又是來實習的,我很不願意啊,自己做的又是java web,最原始的servlet,代碼和混亂,這讓我很無奈啊,所以我在星期一的時候開始提出辭職,然後老大找我談了談,說這個項目是我們外包給別人的,我們只是在他們沒空的時候改一改罷了,這樣說至少讓我感覺到還可以接受,最後我又提了下我自己不想實習,提高工資的事情也通過了,公司的幹事效率還是很高的啊。雖然做的是servlet,但是這個東西還是又學到了一些其他知識。現在我們就想說下。

二:內容

   自己在做servlet的時候,比如說我們的vo中有一個birthday欄位,是Date類型, 我們在從資料庫取出Date類型的資料時,rs.getDate(1)的時候我們取到的其實是一個java.sql.Date類型的日期,你直接設定到vo類中也是行的,但是我是在把其轉換為JSON資料時遇到了問題。報如下的錯誤;

 1 net.sf.json.JSONException: java.lang.reflect.InvocationTargetException 2     at net.sf.json.JSONObject._fromBean(JSONObject.java:987) 3     at net.sf.json.JSONObject.fromObject(JSONObject.java:168) 4     at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:265) 5     at net.sf.json.JSONObject._processValue(JSONObject.java:2808) 6     at net.sf.json.JSONObject.processValue(JSONObject.java:2874) 7     at net.sf.json.JSONObject.setInternal(JSONObject.java:2889) 8     at net.sf.json.JSONObject.setValue(JSONObject.java:1577) 9     at net.sf.json.JSONObject._fromBean(JSONObject.java:934)10     at net.sf.json.JSONObject.fromObject(JSONObject.java:168)11     at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:265)12     at net.sf.json.JSONArray._processValue(JSONArray.java:2514)13     at net.sf.json.JSONArray.processValue(JSONArray.java:2539)14     at net.sf.json.JSONArray.addValue(JSONArray.java:2526)15     at net.sf.json.JSONArray._fromCollection(JSONArray.java:1057)16     at net.sf.json.JSONArray.fromObject(JSONArray.java:123)17     at net.sf.json.JSONArray.fromObject(JSONArray.java:105)18     at com.statistics.servlet.StatisticsServlet.doGet(StatisticsServlet.java:60)19     at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)20     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)21     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)22     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)23     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)24     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)25     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)26     at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)27     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)28     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)29     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)30     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)31     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)32     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)33     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)34     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)35     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)36     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)37     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)38     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)39     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)40     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)41     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)42     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)43     at java.lang.Thread.run(Unknown Source)44 Caused by: java.lang.reflect.InvocationTargetException45     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)46     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)47     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)48     at java.lang.reflect.Method.invoke(Unknown Source)49     at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1773)50     at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1132)51     at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:686)52     at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)53     at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)54     at net.sf.json.JSONObject._fromBean(JSONObject.java:918)55     ... 41 more56 Caused by: java.lang.IllegalArgumentException57     at java.sql.Date.getHours(Unknown Source)58     ... 51 more
View Code

我是斷點調試的時候才知道是在轉換的時候報了錯誤,最後發現是這個日期的原因。我會在下一篇http://www.cnblogs.com/wuhao1991/p/4172385.html寫有關JSON轉換的一些內容。自己現在找到了有四種轉換JSON的方式或者jar吧。

還是先說說日期轉化的吧。

   剛剛看了下jdk的文檔,才知道原來java.sql.Date是繼承java.util.Date的

可以看看其有的方法。下面我們看看代碼

 1 package org.wh.DateDemo; 2  3 import java.sql.Timestamp; 4 import java.text.SimpleDateFormat; 5  6 public class sqlDateDemo { 7  8     public static void main(String[] args) { 9         java.util.Date utilDate=new java.util.Date();10         System.out.println("util的date:"+utilDate);11         12         java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());13         System.out.println("sql的date:"+sqlDate);14         15         java.util.Date sTOu=new java.util.Date(sqlDate.getTime());16         System.out.println("sqlDate轉化為UtilDate"+sTOu);17         18         19         Timestamp ts=new Timestamp(utilDate.getTime());20         System.out.println("Timestamp:"+ts);21         22         java.util.Date tTOu=new java.util.Date(ts.getTime());23         System.out.println("tTOu:"+tTOu);24         25         java.sql.Date sqlDate1=java.sql.Date.valueOf("2014-12-10");26         System.out.println(sqlDate1);27         28         SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");29         SimpleDateFormat f1=new SimpleDateFormat("yyyy");30         System.out.println("format後的資料:"+f.format(tTOu));31         System.out.println("format後的資料:"+f1.format(tTOu));32         33     }34 35 }
View Code

啟動並執行結果如下:

util的date:Thu Dec 18 14:58:53 CST 2014sql的date:2014-12-18sqlDate轉化為UtilDateThu Dec 18 14:58:53 CST 2014Timestamp:2014-12-18 14:58:53.265tTOu:Thu Dec 18 14:58:53 CST 20142014-12-10format後的資料:2014-12-18 02:58:53format後的資料:2014

其實我自己一直在糾結Date日期的插入,如果資料庫中的該欄位是Date類型的話,那麼比如插入今天的日期插入資料庫後的數值就是“2014-12-18”,在java代碼中不要非得轉換為“yyyy-MM-dd”的類型,Date類型即可。

如果在介面顯示的時候可以用jstl的標籤

<fmt:formatDate value="${list.birthday}" pattern="yyyy-MM-dd"/>即可

三:總結

  今天就得先交下有關畢業設計的名稱,我自己好糾結啊,但是我突然又來靈感了,我要做一個充電樁的管理系統,因為最近也是公司在充電樁的控制,而且我前段時間也看到了“豪華車”特斯拉在中國的部署,大城市都配有有了充電樁的裝置。亞洲有40多個,中國就有30多個充電樁,所以就做下統計吧。第二個標題就是做汽車管理系統吧。實在是沒有什麼可以做的了啊。

java.sql.Date和java.util.Date的不同和相互轉換方式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.