參考鏈接: Java中的類型轉換和示例
Code:
? ?
??
?/**? ? ?* 字符串轉換為java.util.Date<br>? ? ?* 支持格式為 yyyy.MM.dd G 'at' hh:mm:ss z 如 '2002-1-1 AD at 22:10:59 PSD'<br>? ? ?* yy/MM/dd HH:mm:ss 如 '2002/1/1 17:55:00'<br>? ? ?* yy/MM/dd HH:mm:ss pm 如 '2002/1/1 17:55:00 pm'<br>? ? ?* yy-MM-dd HH:mm:ss 如 '2002-1-1 17:55:00' <br>? ? ?* yy-MM-dd HH:mm:ss am 如 '2002-1-1 17:55:00 am' <br>? ? ?* @param time String 字符串<br>? ? ?* @return Date 日期<br>? ? ?*/? public static Date stringToDate(String time){? ? ? ?SimpleDateFormat formatter;? ? ? ?int tempPos=time.indexOf("AD") ;? ? ? ?time=time.trim() ;? ? ? ?formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss z");? ? ? ?if(tempPos>-1){? ? ? ? ?time=time.substring(0,tempPos)+? ? ? ? ? ? ? "公元"+time.substring(tempPos+"AD".length());//china? ? ? ? ?formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss z");? ? ? ?}? ? ? ?tempPos=time.indexOf("-");? ? ? ?if(tempPos>-1&&(time.indexOf(" ")<0)){? ? ? ? ?formatter = new SimpleDateFormat ("yyyyMMddHHmmssZ");? ? ? ?}? ? ? ?else if((time.indexOf("/")>-1) &&(time.indexOf(" ")>-1)){? ? ? ? ?formatter = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss");? ? ? ?}? ? ? ?else if((time.indexOf("-")>-1) &&(time.indexOf(" ")>-1)){? ? ? ? ?formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");? ? ? ?}? ? ? ?else if((time.indexOf("/")>-1) &&(time.indexOf("am")>-1) ||(time.indexOf("pm")>-1)){? ? ? ? ?formatter = new SimpleDateFormat ("yyyy-MM-dd KK:mm:ss a");? ? ? ?}? ? ? ?else if((time.indexOf("-")>-1) &&(time.indexOf("am")>-1) ||(time.indexOf("pm")>-1)){? ? ? ? ?formatter = new SimpleDateFormat ("yyyy-MM-dd KK:mm:ss a");? ? ? ?}? ? ? ?ParsePosition pos = new ParsePosition(0);? ? ? ?java.util.Date ctime = formatter.parse(time, pos);? ? ? ? ?return ctime;? ?}? ? ? ?/**? ? ?* 將java.util.Date 格式轉換為字符串格式'yyyy-MM-dd HH:mm:ss'(24小時制)<br>? ? ?* 如Sat May 11 17:24:21 CST 2002 to '2002-05-11 17:24:21'<br>? ? ?* @param time Date 日期<br>? ? ?* @return String? ?字符串<br>? ? ?*/? ? ? ? ?public static String dateToString(Date time){? ? ? ?SimpleDateFormat formatter;? ? ? ?formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");? ? ? ?String ctime = formatter.format(time);? ? ? ? ?return ctime;? ?}? ? ? ?/**? ? ?* 將java.util.Date 格式轉換為字符串格式'yyyy-MM-dd HH:mm:ss a'(12小時制)<br>? ? ?* 如Sat May 11 17:23:22 CST 2002 to '2002-05-11 05:23:22 下午'<br>? ? ?* @param time Date 日期<br>? ? ?* @param x int 任意整數如:1<br>? ? ?* @return String 字符串<br>? ? ?*/? public static String dateToString(Date time,int x){? ? ? ?SimpleDateFormat formatter;? ? ? ?formatter = new SimpleDateFormat ("yyyy-MM-dd KK:mm:ss a");? ? ? ?String ctime = formatter.format(time);? ? ? ? ?return ctime;? ?}? ? ? ?/**? ? ?*取系統當前時間:返回只值為如下形式? ? ?*2002-10-30 20:24:39? ? ?* @return String? ? ?*/? public static String Now(){? ? ? ?return dateToString(new Date());? ?}? ? ?/**? ? ?*取系統當前時間:返回只值為如下形式? ? ?*2002-10-30 08:28:56 下午? ? ?*@param hour 為任意整數? ? ?*@return String? ? ?*/? public static String Now(int hour){? ? ? ?return dateToString(new Date(),hour);? ?}? ? ? ?/**? ? ?*取系統當前時間:返回值為如下形式? ? ?*2002-10-30? ? ?*@return String? ? ?*/? public static String getYYYY_MM_DD(){? ? ? ?return dateToString(new Date()).substring(0,10);? ? ?}? ? ? ?/**? ? ?*取系統給定時間:返回值為如下形式? ? ?*2002-10-30? ? ?*@return String? ? ?*/? ? ?public static String getYYYY_MM_DD(String date){? ? ? ?return date.substring(0,10);? ? ?}? ? ?public static String getHour(){? ? ? ?SimpleDateFormat formatter;? ? ? ?formatter = new SimpleDateFormat ("H");? ? ? ?String ctime = formatter.format(new Date());? ? ? ?return ctime;? ? ? ?}? ? ?public static String getDay(){? ? ? ? ?SimpleDateFormat formatter;? ? ? ?formatter = new SimpleDateFormat ("d");? ? ? ?String ctime = formatter.format(new Date());? ? ? ?return ctime;? ? ? ?}? ? ?public static String getMonth(){? ? ? ?SimpleDateFormat formatter;? ? ? ?formatter = new SimpleDateFormat ("M");? ? ? ?String ctime = formatter.format(new Date());? ? ? ?return ctime;? ? ? ?}? ? ?public static String getYear(){? ? ? ?SimpleDateFormat formatter;? ? ? ?formatter = new SimpleDateFormat ("yyyy");? ? ? ?String ctime = formatter.format(new Date());? ? ? ?return ctime;? ? ? ?}? ? ? ? ? ? public static String getWeek(){? ? ? ?SimpleDateFormat formatter;? ? ? ?formatter = new SimpleDateFormat ("E");? ? ? ?String ctime = formatter.format(new Date());? ? ? ?return ctime;? ? ? ?}? ? ?在jsp頁面中的日期格式和sqlserver中的日期格式不一樣,怎樣統一?? ? ?在頁面上顯示輸出時,用下面的函數處理一下? ? ?public class DateUtil(){? ? ? ?public static String fmtShortEnu(Date myDate) {? ? ? ?SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");? ? ? ?String strDate = formatter.format(myDate);? ? ? ?return strDate;? ?}? ?}? ? ?new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");? ?new java.text.SimpleDateFormat("yyyy-MM-dd")? ?建議還是把sqlserver的字段類型改成varchar的吧,用字符串處理可以完全按照自己的意愿處理,沒有特殊的需求,不要使用date型? ? ? ?字串日期格式轉換? ? 用的API是SimpleDateFormat,它是屬於java.text.SimpleDateFormat,所以請記得import進來!? ? ?用法:? ? SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");? ? 這一行最重要,它確立了轉換的格式,yyyy是完整的西元年,MM是月份,dd是日期, 至於HH:mm:ss就不需要我再解釋了吧!? ? ps:為什麼有的格式大寫,有的格式小寫,那是怕避免混淆,例如MM是月份,mm是分;HH是24小時制,而hh是12小時制? ? ?1.字串轉日期:? ? 2002-10-8 15:30:22要把它轉成日期,可以用? ? Date date=sdf.parse("2002-10-8 15:30:22");? ? 2.日期轉字串? ? 假如把今天的日期轉成字串可用? ? String datestr=sdf.format(new Date());? ? 這個字串的內容便類似2002-10-08 14:55:38? ? 透過這個API我們便可以隨心所欲的將日期轉成我們想要的字串格式,例如希望將日期輸出成2002年10月08日,? ? 我們可以這麼寫:? ? SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");? ? String datestr=sdf.format(new Date());? ? datestr便會依照我們設定的格式輸出? ? ? ?//對日期格式的轉換成("yyyy-MM-dd")格式的方法? ?public java.sql.Date Convert(String str)? ?{? ? ? ?java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");? ? ? ?try? ? ? {? ? ? ? ?java.util.Date d = sdf.parse(str);? ? ? ? ?java.sql.Date d1 = new java.sql.Date(d.getTime());? ? ? ? ?return d1;? ? ? ?}? ? ? ?catch(Exception ex)? ? ? ?{? ? ? ? ?ex.printStackTrace();? ? ? ? ?return null;? ? ? ?}? ?}? ?應用如下:? ?ctmt.setDate(7,this.Convert(info.getManBirth())); // @DATETIME? ? ? ?常用日期問題集錦? ? ? ?1、獲取服務器端當前日期:? ?<%@ page import="java.util.Date"%>? ?<%? ?Date myDate = new Date();? ?%>? ? ?2、獲取當前年、月、日:? ?<%@ page import="java.util.Date"%>? ? ?<%? ?Date myDate = new Date();? ?int thisYear = myDate.getYear() + 1900;//thisYear = 2003? ?int thisMonth = myDate.getMonth() + 1;//thisMonth = 5? ?int thisDate = myDate.getDate();//thisDate = 30? ?%>? ? ? ?3、按本地時區輸出當前日期? ?<%@ page import="java.util.Date"%>? ?<%? ?Date myDate = new Date();? ?out.println(myDate.toLocaleString());? ?%>? ?輸出結果為:? ?2003-5-30? ? ? 4、獲取數據庫中字段名為”publish_time“、類型為Datetime的值? ?<%@ page import="java.util.Date"%>? ?<%? ?...連接數據庫...? ?ResultSet rs = ...? ?Date sDate = rs.getDate("publish_time");? ?%>? ?[code]? ? ?5、按照指定格式打印日期? ?[code]? ?<%@ page import="java.util.Date"%>? ?<%@ page import="java.text.DateFormat"%>? ?<%? ?Date dNow = new Date();? ? ?SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");? ?out.println("It is " + formatter.format(dNow));? ?%>? ? ?輸出的結果為:? ?It is 星期五 2003.05.30 at 11:30:46 上午 CST? ? (更為詳盡的格式符號請參看SimpleDateFormat類)? ? ?6、將字符串轉換為日期? ?<%@ page import="java.util.Date"%>? ?<%@ page import="java.text.DateFormat"%>? ?<%? ?String input = "1222-11-11";? ?SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");? ?Date t = null;? ?try{? ?t = formatter.parse(input);? ?out.println(t);? ?}catch(ParseException e){? ?out.println("unparseable using " + formatter);? ?}? ?%>? ?輸出結果為:? ?Fri Nov 11 00:00:00 CST 1222? ? 7、計算日期之間的間隔? ?<%@ page import="java.util.Date"%>? ?<%@ page import="java.text.DateFormat"%>? ?<%? ?String input = "2003-05-01";? ?SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");? ?Date d1 = null;? ?try{? ?d1 = formatter.parse(input);? ?}catch(ParseException e){? ?out.println("unparseable using " + formatter);? ?}? ? ?Date d2 = new Date();? ? ?long diff = d2.getTime() - d1.getTime();? ?out.println("Difference is " + (diff/(1000*60*60*24)) + " days.");? ?%>? ?輸出結果為:? ?Difference is 29 days.? ? ?8、日期的加減運算? ?方法:用Calendar類的add()方法? ?<%@ page import="java.util.*"%>? ?<%@ page import="java.text.*"%>? ?<%? ?Calendar now = Calendar.getInstance();? ?SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");? ?out.println("It is now " + formatter.format(now.getTime()));? ?now.add(Calendar.DAY_OF_YEAR,-(365*2));? ?out.println("<br>");? ?out.println("Two years ago was " + formatter.format(now.getTime()));? ?%>? ?輸出結果為:? ?It is now 星期五 2003.05.30 at 01:45:32 下午 CST? ? Two years ago was 星期三 2001.05.30 at 01:45:32 下午 CST? ? ?9、比較日期? ?方法:用equals()、before()、after()方法? ?<%@ page import="java.util.*"%>? ?<%@ page import="java.text.*"%>? ?<%? ?DateFormat df = new SimpleDateFormat("yyy-MM-dd");? ?Date d1 = df.parse("2000-01-01");? ?Date d2 = df.parse("1999-12-31");? ? ?String relation = null;? ?if(d1.equals(d2))? ?relation = "the same date as";? ?else if(d1.before(d2))? ?relation = "before";? ?else? relation = "after";? ?out.println(d1 +" is " + relation + ' ' + d2);? ?%>? ?輸出結果為:? ?Sat Jan 01 00:00:00 CST 2000 is after Fri Dec 31 00:00:00 CST 1999? ? 10、記錄一件事所花費的時間? ?方法:調用兩次System.getTimeMillis()方法,求差值? ?<%@ page import="java.text.*"%>? ?<%? ?long t0,t1;? ?t0 = System.currentTimeMillis();? ?out.println("Cyc starts at " + t0);? ?int k = 0;? ?for(int i =0;i<100000;i++){? ?k += i;? ?}? ?t1 = System.currentTimeMillis();? ?out.println("<br>");? ?out.println("Cyc ends at " + t1);? ?out.println("<br>");? ?out.println("This run took " + (t1-t0) + "ms.");? ?%>? ? ?輸出結果為:? ?Cyc starts at 1054275312432? ? Cyc ends at 1054275312442? ? This run took 10ms.? ? ?其它:如何格式化小數? ? ?<%@ page import="java.text.*"%>? ?<%? ?DecimalFormat df = new DecimalFormat(",###.00");? ?double aNumber = 33665448856.6568975;? ?String result = df.format(aNumber);? ?out.println(result);? ?%>? ? ?輸出結果為:? ?33,665,448,856.66? ? ? ======================? ? ?日期比較:? ? ?在JAVA中日期的計算與比較可以使用Date和DateFormat來解決,下面是一段示例代碼:? ? ?import java.text.*;? ?import java.util.*;? ? ?public class Test{? ? ? public static void main(String[] args){? ? try{? ? Date date=new Date();? ? DateFormat df=DateFormat.getDateTimeInstance();? ? String now=df.format(date);? ? System.out.println("現在時間:"+now);? ? ? System.out.println("現在時間是否在16:00之前:"+date.before(df.parse("2004-12-24 16:00:00")));? ? }? ? catch(ParseException e){System.out.print(e.getMessage());? ? }? ? }