用法: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );
这一行最重要,它确立了转换的格式,yyyy是完整的公元年,MM是月份,dd是日期,至于HH:mm:ss
就不需要我再解释了吧!
PS:为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM是月份,mm是分;HH是24小
时制,而hh是12小时制。
1.字符串转日期
2008-07-10 19:20:00 要把它转成日期,可以用 Date date = sdf.parse( " 2008-07-10 19:20:00 " );
2.日期转字符串
假如把今天的日期转成字符串可用 String str = sdf.format(new Date());
这个字符串内容的格式类似2008-07-10 19:20:00。
透过这个API我们便可以随心所欲的将日期转成我们想要的字符串格式,例如希望将日期输出成2008
年7月10日,我们可以这么写:
SimpleDateFormat sdf = new SimpleDateFormat( " yyyy年MM月dd日 " );
String str = sdf.format(new Date());
str便会依照我们设定的格式输出了。
附编写好的一个简单实例:
1 importjava.util.Date;2 importjava.text.ParseException;3 importjava.text.SimpleDateFormat;4
5 public classConvertDemo {6
7 /**
8 * 日期转换成字符串9 *@paramdate10 *@returnstr11 */
12 public staticString DateToStr(Date date) {13
14 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");15 String str =format.format(date);16 returnstr;17 }18
19 /**
20 * 字符串转换成日期21 *@paramstr22 *@returndate23 */
24 public staticDate StrToDate(String str) {25
26 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");27 Date date = null;28 try{29 date =format.parse(str);30 } catch(ParseException e) {31 e.printStackTrace();32 }33 returndate;34 }35
36 public static voidmain(String[] args) {37
38 Date date = newDate();39 System.out.println("日期转字符串:" +ConvertDemo.DateToStr(date));40 System.out.println("字符串转日期:" +ConvertDemo.StrToDate(ConvertDemo.DateToStr(date)));41
42 }43
44 }45
46 Java中日期格式转换47
48 /**
49 * 字符串转换为java.util.Date
50 * 支持格式为 yyyy.MM.dd G 'at' hh:mm:ss z 如 '2002-1-1 AD at 22:10:59 PSD'
51 * yy/MM/dd HH:mm:ss 如 '2002/1/1 17:55:00'
52 * yy/MM/dd HH:mm:ss pm 如 '2002/1/1 17:55:00 pm'
53 * yy-MM-dd HH:mm:ss 如 '2002-1-1 17:55:00'
54 *@paramtime String 字符串
55 *@returnDate 日期
56 */
57 public staticDate stringToDate(String time){58 SimpleDateFormat formatter;59 int tempPos=time.indexOf("AD") ;60 time=time.trim() ;61 formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss z");62 if(tempPos>-1){63 time=time.substring(0,tempPos)+
64 "公元"+time.substring(tempPos+"AD".length());//china
65 formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss z");66 }67 tempPos=time.indexOf("-");68 if(tempPos>-1&&(time.indexOf(" ")<0)){69 formatter = new SimpleDateFormat ("yyyyMMddHHmmssZ");70 }71 else if((time.indexOf("/")>-1) &&(time.indexOf(" ")>-1)){72 formatter = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss");73 }74 else if((time.indexOf("-")>-1) &&(time.indexOf(" ")>-1)){75 formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");76 }77 else if((time.indexOf("/")>-1) &&(time.indexOf("am")>-1) ||(time.indexOf("pm")>-1)){78 formatter = new SimpleDateFormat ("yyyy-MM-dd KK:mm:ss a");79 }80 else if((time.indexOf("-")>-1) &&(time.indexOf("am")>-1) ||(time.indexOf("pm")>-1)){81 formatter = new SimpleDateFormat ("yyyy-MM-dd KK:mm:ss a");82 }83 ParsePosition pos = new ParsePosition(0);84 java.util.Date ctime =formatter.parse(time, pos);85
86 returnctime;87 }88
89 /**
90 * 将java.util.Date 格式转换为字符串格式'yyyy-MM-dd HH:mm:ss'(24小时制)
91 * 如Sat May 11 17:24:21 CST 2002 to '2002-05-11 17:24:21'
92 *@paramtime Date 日期
93 *@returnString 字符串
94 */
95
96
97 public staticString dateToString(Date time){98 SimpleDateFormat formatter;99 formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");100 String ctime =formatter.format(time);101
102 returnctime;103 }104
105
106 /**
107 * 将java.util.Date 格式转换为字符串格式'yyyy-MM-dd HH:mm:ss a'(12小时制)
108 * 如Sat May 11 17:23:22 CST 2002 to '2002-05-11 05:23:22 下午'
109 *@paramtime Date 日期
110 *@paramx int 任意整数如:1
111 *@returnString 字符串
112 */
113 public static String dateToString(Date time,intx){114 SimpleDateFormat formatter;115 formatter = new SimpleDateFormat ("yyyy-MM-dd KK:mm:ss a");116 String ctime =formatter.format(time);117
118 returnctime;119 }120
121
122
123 /**
124 *取系统当前时间:返回只值为如下形式125 *2002-10-30 20:24:39126 *@returnString127 */
128 public staticString Now(){129 return dateToString(newDate());130 }131
132 /**
133 *取系统当前时间:返回只值为如下形式134 *2002-10-30 08:28:56 下午135 *@paramhour 为任意整数136 *@returnString137 */
138 public static String Now(inthour){139 return dateToString(newDate(),hour);140 }141
142
143 /**
144 *取系统当前时间:返回值为如下形式145 *2002-10-30146 *@returnString147 */
148 public staticString getYYYY_MM_DD(){149 return dateToString(new Date()).substring(0,10);150
151 }152
153
154 /**
155 *取系统给定时间:返回值为如下形式156 *2002-10-30157 *@returnString158 */
159 public staticString getYYYY_MM_DD(String date){160 return date.substring(0,10);161
162 }163
164
165 public staticString getHour(){166 SimpleDateFormat formatter;167 formatter = new SimpleDateFormat ("H");168 String ctime = formatter.format(newDate());169 returnctime;170 }171
172 public staticString getDay(){173 SimpleDateFormat formatter;174 formatter = new SimpleDateFormat ("d");175 String ctime = formatter.format(newDate());176 returnctime;177 }178
179 public staticString getMonth(){180 SimpleDateFormat formatter;181 formatter = new SimpleDateFormat ("M");182 String ctime = formatter.format(newDate());183 returnctime;184 }185
186 public staticString getYear(){187 SimpleDateFormat formatter;188 formatter = new SimpleDateFormat ("yyyy");189 String ctime = formatter.format(newDate());190 returnctime;191 }192
193 public staticString getWeek(){194 SimpleDateFormat formatter;195 formatter = new SimpleDateFormat ("E");196 String ctime = formatter.format(newDate());197 returnctime;198 }
日期比较:
在JAVA中日期的计算与比较可以使用Date和DateFormat来解决,下面是一段示例代码:
1 import java.text.*;2 import java.util.*;3
4 public classTest{5
6 public static voidmain(String[] args){7 try{8 Date date=newDate();9 DateFormat df=DateFormat.getDateTimeInstance();10 String now=df.format(date);11 System.out.println("现在时间:"+now);12
13 System.out.println("现在时间是否在16:00之前:"+date.before(df.parse("2004-12-24 16:00:00")));14 }15 catch(ParseException e){System.out.print(e.getMessage());16 }17 }18 }
查看更多点以下原贴网址:
(转自:http://wenku.baidu.com/link?url=t-ulNF0TZ3_5unuhBbU6topzg1ChyPbS75mNvM_M4-aZjnM38FisZ0XTBlhJrlXKgnhbSYKAE99W6WMI6zFFxQPMv9yqD__afoV7Gdb5Ivq)