<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-200  評論-148  文章-15  trackbacks-0

    將Date類型寫入數據庫的兩種方法
    先了解幾個類:
    1、具體類(和抽象類相對)java.util.Date?
    2、抽象類java.text.DateFormat 和它的一個具體子類,java.text.SimpleDateFormat?
    3、抽象類java.util.Calendar 和它的一個具體子類,java.util.GregorianCalendar?
    具體類可以被實例化, 但是抽象類卻不能. 你首先必須實現抽象類的一個具體子類.

    ************************************
    一種將java的日期類型直接轉換為SQL的日期類型的方法,比較簡單但適用性狹窄,
    注意一下例子在jdk下編譯沒有時間,但在jb和Eclipse下就有時間,不知怎么回事

    ——————————————
    public class a {

    public static void main(String[] args) {
    ?
    ? java.util.Date now = new Date();
    ? //PreparedStatement類型的setDate方法只接受sql.date類型,所有必須先轉換
    ? java.sql.Date sqlnow = new java.sql.Date(now.getTime());
    ?? try {
    ??? //froName必須放在try中,否則編譯不通過,可能froName方法拋出編譯時異常了
    ??? //經查閱 public static Class forName(String className) throws???? ClassNotFoundException {...}
    ??? Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    ??? Connection connection = DriverManager.getConnection("jdbc:microsoft:sqlserver://192.168.0.2:1433;DatabaseName=pubs","sa","");
    ??? PreparedStatement ps=connection.prepareStatement("update test set f1=?");
    ??? ps.setDate(1,sqlnow);
    ??? int i = ps.executeUpdate();
    ?? }
    ??? catch (Exception ex) {}

    ?}
    }
    **********************************************************
    另一種是將java的date類型通過SimpleDateFormat轉換為字符串,再寫到sql語句中
    -----------------------------------------------------------
    import java.sql.*;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class a{
    ? public static void main(String[] args) {
    ? //之所以用kk而不用hh是因為kk是24進制的而不雖操作系統設置變動
    ? SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
    ? Date now = new Date();
    ? //format()方法的返回值是String型
    ? System.out.println(sdf.format(date));
    ?}}

    -----------------------------------------------------
    一下是逆操作,將String轉換為Date,parse()方法能拋出ParseException異常,所以你必須使用適當的異常處理技術
    try{
    ??? SimpleDateFormat sbf =new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
    ??? String sdate="2004-05-14 21:29:51";
    ??? Date ddate = sbf.parse(sdate);
    ??? System.out.println(ddate);
    ??? }
    catch (Exception ex) { }
    **************************************************************
    以下是副產品,我們用到的情況比較少
    util.date類型
    ----------------------------------------------
    ?? //1年前日期
    ?? java.util.Date myDate=new java.util.Date();?
    ?? long myTime=(myDate.getTime()/1000)-60*60*24*365;
    ?? myDate.setTime(myTime*1000);
    ?? //明天日期
    ?? myDate=new java.util.Date();
    ?? myTime=(myDate.getTime()/1000)+60*60*24;
    ?? myDate.setTime(myTime*1000);
    ? //兩個時間之間的天數
    ?? SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
    ?? java.util.Date date= myFormatter.parse("2003-05-1");
    ?? java.util.Date mydate= myFormatter.parse("1899-12-30");
    ?? long? day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
    ?? //加半小時
    ?? SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    ?? java.util.Date date1 = format.parse("2002-02-28 23:16:00");
    ?? long Time=(date1.getTime()/1000)+60*30;
    ?? date1.setTime(Time*1000);
    ?? String mydate1=formatter.format(date1);
    ?? //年月周求日期
    ?? SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
    ?? java.util.Date date2= formatter2.parse("2003-05 5 星期五");
    ?? SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
    ?? String mydate2=formatter3.format(date2);
    ?? //求是星期幾
    ?? mydate= myFormatter.parse("2001-1-1");
    ?? SimpleDateFormat formatter4 = new SimpleDateFormat("E");
    ?? String mydate3=formatter4.format(mydate);
    -----------------------------------------------
    ?now.getYear();//實際年份減去1900,如果構造函數為Date(2008,2,25)則不減1900,如果構造函數為Date(17009456745)或者setTime(17009456745)還減1900
    ?now.getMonth();//實際月份減去1,如果構造函數為Date(2008,2,25)則不減1,如果構造函數為Date(17009456745)或者setTime(17009456745)還減1900
    ?now.getDay();//*,原來是取星期,不知sun公司是咋想的,腦袋進水了。
    ?now.getDate();//這才是取1~31之間的日
    ?now.getHours();//24進制的小時
    ?now.getMinutes();//分
    ?now.getSeconds();//秒
    ?now.getTime();//返回1970年1月1日00:00:00起至今的毫秒數
    ?now.setTime(long time);//真實日期為1970年1月1日午夜+time毫秒

    *************************************
    日歷類型的子類GregorianCalendar類型
    構造函數GregorianCalendar(int year, int month, int date) ,無參數為但前時間
    注意月份的表示,一月是0,二月是1,以此類推。因此最好使用單詞而不是使用數字來表示月份。父類Calendar使用常量來表示月份:JANUARY, FEBRUARY...
    所以1903年12月17日可以寫為
    GregorianCalendar aaa = new GregorianCalendar(1903, Calendar.DECEMBER, 17)
    GregorianCalendar aaa = new GregorianCalendar(1903, 11, 17);
    ---------------------------------------
    import java.util.Date;
    import java.text.DateFormat;
    import java.util.GregorianCalendar;
    public class a {
    public static void main(String[] args) {
    ? DateFormat df =? DateFormat.getDateInstance(DateFormat.FULL);
    ? GregorianCalendar gca = new GregorianCalendar();
    ? //getTime()方法是將GregorianCalendar對象轉換為Date對象
    ? gca.setTime(new Date());
    ? System.out.println("系統時間: " +df.format(gca.getTime()));
    ? //set 方法能夠讓我們通過簡單的設置星期中的哪一天這個域來將我們的時間調整為星期五.注意到這里我們使用了常量 DAY_OF_WEEK 和 FRIDAY來增強代碼的可讀性.
    ? //如果當前為星期五時間不變
    ? gca.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);
    ? System.out.println("下一個星期五: " +? df.format(gca.getTime()));
    ? //add 方法讓我們能夠在日期上加上數值.
    ? gca.add(GregorianCalendar.DAY_OF_MONTH, 8);
    ? System.out.println("再加8天: " +? df.format(gca.getTime()));
    ? //get方法取對象中的一部分
    ? int i =? gca.get(GregorianCalendar.DAY_OF_MONTH);
    ? System.out.println(i);
    }}



    ***************************************
    Locale類:(java.util.Locale)
    -----------------------------------
    import java.util.Locale;
    public class a {
    ?public static void main(String[] args) {
    ? Locale localeEN = new Locale("en", "US");
    ? //另一實例化方法=locale.ENGLISH;
    ? System.out.println("Display Name: " +localeEN.getDisplayName());
    ? System.out.println("Country: " + localeEN.getCountry());
    ? System.out.println("Language: " + localeEN.getLanguage());

    ? Locale localeFR = new Locale("fr", "FR");
    ? System.out.println("\nDisplay Name: " +localeFR.getDisplayName());
    ? System.out.println("Country: " + localeFR.getCountry());
    ? System.out.println("Language: " + localeFR.getLanguage());

    ? // 用三種語言顯示本機語言、英語、法語
    ? System.out.println("用本語顯示DisplayName: "+ localeEN.getDisplayName());
    ? System.out.println("用英語顯示DisplayName:"+?? localeEN.getDisplayName(localeEN ));
    ? System.out.println("用法語顯示DisplayName:"+?? localeEN.getDisplayName(localeFR ));
    ?}
    }
    *****************************************************

    把Date以不同地域的格式顯示:java.text.DateFormat
    getDateTimeInstance()的前兩個參數分別代表日期風格和時間風格,取值為SHORT, MEDIUM, LONG, 和 FULL
    getDateInstance()方法:Java還提供了幾個選擇日期格式,你可以通過使用重載的getDateInstance(int style)獲得。出于方便的原因,DateFormat提供了幾種預置的常量,你可以使用這些常量參數SHORT, MEDIUM, LONG, 和FULL
    -----------------------------------------------
    import java.util.Locale;
    import java.text.DateFormat;
    import java.util.Date;
    public class a {
    ? public static void main(String[] args) {????
    ??? Date now=new Date();
    ??? Locale localeCN=Locale.CHINA;
    ??? DateFormat df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,localeCN);
    ??? System.out.println(df.format(now));
    ?? //結果為2004年5月17日 星期一 下午16時38分32秒 CST?
    }}
    ******************************************************
    時區 java.util.TimeZone
    --------------------------------------------------------
    import java.util.TimeZone;
    public class a {
    ? public static void main(String[] args) {
    ? // 系統時區
    ? TimeZone timeZoneFL = TimeZone.getDefault();
    ? System.out.println("\n" + timeZoneFL.getDisplayName());
    ? System.out.println("與GMT相差的微秒數: " + timeZoneFL.getRawOffset());
    ? System.out.println("Uses daylight saving: " + timeZoneFL.useDaylightTime());
    ? //通過“時區字符串ID”指定時區
    ? TimeZone timeZoneLondon = TimeZone.getTimeZone("Europe/London");
    ? System.out.println("\n" + timeZoneLondon.getDisplayName());
    ? System.out.println("與GMT相差的微秒數: " + timeZoneLondon.getRawOffset());
    ? System.out.println("采用夏令時: " + timeZoneLondon.useDaylightTime());
    ? }}
    -------------------------------------------------------
    顯示結果:
    中國標準時間
    與GMT相差的微秒數:
    Uses daylight saving:false;

    格林威治時間
    與GMT相差的微秒數:
    采用夏令時: true

    ********************************************************
    顯示不同時區的時間? df.setTimeZone(TimeZone kkk)
    ----------------------------------------------------
    public class a {
    ? public static void main(String[] args) {

    ??? Date now=new Date();
    ??? DateFormat df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
    ??? TimeZone timezoneCH=TimeZone.getTimeZone("China/BeiJing");
    ??? df.setTimeZone(timezoneCH);
    ??? System.out.println("北京時間"+df.format(now));
    ??? TimeZone timezoneFR=TimeZone.getTimeZone("Europe/Paris");
    ??? df.setTimeZone(timezoneFR);
    ??? System.out.println("巴黎時間"+df.format(now));???
    ? }}
    -----------------------------------------------------
    結果如下:
    北京時間2004年5月17日 星期一 上午09時31分34秒 GMT
    巴黎時間2004年5月17日 星期一 上午11時31分34秒 CEST
    *******************************************************

    posted on 2006-07-27 08:29 無聲 閱讀(8165) 評論(0)  編輯  收藏 所屬分類: 職場生活
    主站蜘蛛池模板: 免费又黄又爽的视频| 好大好深好猛好爽视频免费| 亚洲国产精品国产自在在线| 日韩亚洲翔田千里在线| 日本免费电影一区| 亚洲GV天堂GV无码男同 | 小日子的在线观看免费| 亚洲国产精品无码久久SM| 女人隐私秘视频黄www免费| 精品国产综合成人亚洲区| 久草免费福利资源站| 亚洲成人黄色在线观看| 中文字幕乱码免费视频| 亚洲AV日韩综合一区尤物| 在线观看人成视频免费| 大片免费观看92在线视频线视频| 久久99亚洲综合精品首页| 97无码人妻福利免费公开在线视频 | 污污视频网站免费观看| 亚洲视频人成在线播放| 国产三级在线免费| 亚洲电影唐人社一区二区| 免费看又爽又黄禁片视频1000| 无码天堂亚洲国产AV| 精品国产_亚洲人成在线高清| 免费观看美女用震蛋喷水的视频| 亚洲深深色噜噜狠狠网站| 亚洲国产成人五月综合网 | 1000部禁片黄的免费看| 国内精品久久久久影院亚洲| 亚洲AV无码一区二区三区在线观看 | 97公开免费视频| 亚洲欧美日韩自偷自拍| 国产成人麻豆亚洲综合无码精品| 无码国产精品一区二区免费式芒果| 亚洲婷婷天堂在线综合| 亚洲色偷偷综合亚洲AV伊人| 91青青青国产在观免费影视| 亚洲精品第一国产综合亚AV| 国产精品国产亚洲精品看不卡| 中文字幕无码播放免费|