java中的日期时间
java.text.SimpleDateFormat 类 ----时间日期格式化
java.util.Date类 ----构造时间日期
1 package com; 2 3 import java.text.ParsePosition; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6 7 public class Test4 { 8 9 /** 10 * @param args 11 */ 12 public static void main(String[] args) { 13 // TODO Auto-generated method stub 14 15 16 Date d1 = stringToDate("2011-12-13"); 17 Date dd1=stringToDate("2011-12-12"); 18 System.out.println(dd1); //Mon Dec 12 00:00:00 CST 2011 19 System.out.println(d1); //Tue Dec 13 00:00:00 CST 2011 20 21 if(d1.compareTo(dd1)==1){ 22 System.out.println("d1>dd1"); 23 }else if(d1.compareTo(dd1)==0){ 24 System.out.println("d1==dd1"); 25 }else if(d1.compareTo(dd1)==-1){ 26 System.out.println("d1<dd1"); 27 } //d1>dd1 28 Date d2=new Date(); 29 System.out.println(dateToString1(d2));//2013-05-28 02:45:38 下午 30 System.out.println(Now());//2013-05-28 14:45:38 31 System.out.println(getYYYY_MM_DD());//2013-05-28 32 System.out.println(getDay());//28 33 System.out.println(getHour());//14 34 System.out.println(getMonth());//05 35 System.out.println(getWeek());//星期二 36 System.out.println(getYear());//2013 37 38 39 String s1="22"; 40 41 } 42 43 /** 44 * 字符串转换为java.util.Date<br> 45 * 支持格式为 yyyy.MM.dd G 'at' hh:mm:ss z 如 '2002-1-1 AD at 22:10:59 PSD'<br> 46 * yy/MM/dd HH:mm:ss 如 '2002/1/1 17:55:00'<br> 47 * yy/MM/dd HH:mm:ss pm 如 '2002/1/1 17:55:00 pm'<br> 48 * yy-MM-dd HH:mm:ss 如 '2002-1-1 17:55:00' <br> 49 * yy-MM-dd HH:mm:ss am 如 '2002-1-1 17:55:00 am' <br> 50 * 51 * @param time 52 * String 字符串<br> 53 * @return Date 日期<br> 54 */ 55 public static Date stringToDate(String time) { 56 SimpleDateFormat formatter; 57 int tempPos = time.indexOf("AD"); 58 time = time.trim(); 59 formatter = new SimpleDateFormat("yyyy.MM.dd G 'at' hh:mm:ss z"); 60 if (tempPos > -1) { 61 time = time.substring(0, tempPos) + "公元" 62 + time.substring(tempPos + "AD".length());// china 63 formatter = new SimpleDateFormat("yyyy.MM.dd G 'at' hh:mm:ss z"); 64 } 65 tempPos = time.indexOf("-"); 66 if (tempPos > -1 && (time.indexOf(" ") < 0)) { 67 formatter = new SimpleDateFormat ("yyyy-MM-dd"); 68 } else if ((time.indexOf("/") > -1) && (time.indexOf(" ") > -1)) { 69 formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 70 } else if ((time.indexOf("-") > -1) && (time.indexOf(" ") > -1)) { 71 formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 72 } else if ((time.indexOf("/") > -1) && (time.indexOf("am") > -1) 73 || (time.indexOf("pm") > -1)) { 74 formatter = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss a"); 75 } else if ((time.indexOf("-") > -1) && (time.indexOf("am") > -1) 76 || (time.indexOf("pm") > -1)) { 77 formatter = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss a"); 78 } 79 ParsePosition pos = new ParsePosition(0); 80 java.util.Date ctime = formatter.parse(time, pos); 81 82 return ctime; 83 } 84 85 /** 86 * 将java.util.Date 格式转换为字符串格式'yyyy-MM-dd HH:mm:ss'(24小时制)<br> 87 * 如Sat May 11 17:24:21 CST 2002 to '2002-05-11 17:24:21'<br> 88 * 89 * @param time 90 * Date 日期<br> 91 * @return String 字符串<br> 92 */ 93 94 public static String dateToString(Date time) { 95 SimpleDateFormat formatter; 96 formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 97 String ctime = formatter.format(time); 98 99 return ctime; 100 } 101 102 /** 103 * 将java.util.Date 格式转换为字符串格式'yyyy-MM-dd HH:mm:ss a'(12小时制)<br> 104 * 如Sat May 11 17:23:22 CST 2002 to '2002-05-11 05:23:22 下午'<br> 105 * 106 * @param time 107 * Date 日期<br> 108 * @param x 109 * int 任意整数如:1<br> 110 * @return String 字符串<br> 111 */ 112 public static String dateToString1(Date time) { 113 SimpleDateFormat formatter; 114 formatter = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss a"); 115 String ctime = formatter.format(time); 116 117 return ctime; 118 } 119 120 /** 121 * 取系统当前时间:返回只值为如下形式 2002-10-30 20:24:39 122 * 123 * @return String 124 */ 125 public static String Now() { 126 return dateToString(new Date()); 127 } 128 129 /** 130 * 取系统当前时间:返回只值为如下形式 2002-10-30 08:28:56 下午 131 * 132 * @param hour 133 * 为任意整数 134 * @return String 135 */ 136 public static String Now(int hour) { 137 return dateToString1(new Date()); 138 } 139 140 /** 141 * 取系统当前时间:返回值为如下形式 2002-10-30 142 * 143 * @return String 144 */ 145 public static String getYYYY_MM_DD() { 146 return dateToString(new Date()).substring(0, 10); 147 148 } 149 150 /** 151 * 取系统给定时间:返回值为如下形式 2002-10-30 152 * 153 * @return String 154 */ 155 public static String getYYYY_MM_DD(String date) { 156 return date.substring(0, 10); 157 158 } 159 160 public static String getHour() { 161 SimpleDateFormat formatter; 162 formatter = new SimpleDateFormat("H"); 163 String ctime = formatter.format(new Date()); 164 return ctime; 165 } 166 167 public static String getDay() { 168 SimpleDateFormat formatter; 169 formatter = new SimpleDateFormat("d"); 170 String ctime = formatter.format(new Date()); 171 return ctime; 172 } 173 174 public static String getMonth() { 175 SimpleDateFormat formatter; 176 formatter = new SimpleDateFormat("MM"); 177 String ctime = formatter.format(new Date()); 178 return ctime; 179 } 180 181 public static String getYear() { 182 SimpleDateFormat formatter; 183 formatter = new SimpleDateFormat("yyyy"); 184 String ctime = formatter.format(new Date()); 185 return ctime; 186 } 187 188 public static String getWeek() { 189 SimpleDateFormat formatter; 190 formatter = new SimpleDateFormat("E"); 191 String ctime = formatter.format(new Date()); 192 return ctime; 193 } 194 }
java中日期时间的比较要用到java.text.SimpleDateFormat 类和java.util.Date类compareTo方法,SimpleDateFormat类用于时间日期格式化,将日期时间格式化为制定的格式,compareTo方法用于比较日期时间。
用法:
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;
}
}