记录有关Java中格式化工具SimpleDateFormat类的使用:
将Date类型转化为字符串类型
package dataFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatTest {
public static void main(String a[]){
Date now = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("'Today is' yyyy 'year' MM 'month' dd 'day' HH 'hour' mm 'minute' ss 'second' ");
System.out.println(simpleDateFormat.format(now));
}
}
/*Today is 2014 year 06 month 16 day 16 hour 02 minute 18 second */
日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A'
到 'Z'
和 'a'
到 'z'
被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 ('
) 引起来,以免进行解释。"''"
表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。
定义了以下模式字母(所有其他字符 'A'
到 'Z'
和 'a'
到 'z'
都被保留):
模式字母通常是重复的,其数量确定其精确表示:
Text: 对于格式化来说,如果模式字母的数量大于等于 4,则使用完全形式;否则,在可用的情况下使用短形式或缩写形式。对于解析来说,两种形式都是可接受的,与模式字母的数量无关。
Number: 对于格式化来说,模式字母的数量是最小的数位,如果数位不够,则用 0 填充以达到此数量。对于解析来说,模式字母的数量被忽略,除非必须分开两个相邻字段。
Year: 如果格式器的
Calendar
是格里高利历,则应用以下规则。
否则,则应用日历系统特定的形式。对于格式化和解析,如果模式字母的数量为 4 或大于 4,则使用日历特定的 long form。否则,则使用日历特定的 short or abbreviated form。对于格式化来说,如果模式字母的数量为 2,则年份截取为 2 位数,否则将年份解释为 number。
对于解析来说,如果模式字母的数量大于 2,则年份照字面意义进行解释,而不管数位是多少。因此使用模式 "MM/dd/yyyy",将 "01/11/12" 解析为公元 12 年 1 月 11 日。
在解析缩写年份模式("y" 或 "yy")时,
SimpleDateFormat
必须相对于某个世纪来解释缩写的年份。这通过将日期调整为SimpleDateFormat
实例创建之前的 80 年和之后 20 年范围内来完成。例如,在 "MM/dd/yy" 模式下,如果SimpleDateFormat
实例是在 1997 年 1 月 1 日创建的,则字符串 "01/11/12" 将被解释为 2012 年 1 月 11 日,而字符串 "05/04/64" 将被解释为 1964 年 5 月 4 日。在解析时,只有恰好由两位数字组成的字符串(如Character.isDigit(char)
所定义的)被解析为默认的世纪。其他任何数字字符串将照字面意义进行解释,例如单数字字符串,3 个或更多数字组成的字符串,或者不都是数字的两位数字字符串(例如"-1")。因此,在相同的模式下, "01/02/3" 或 "01/02/003" 解释为公元 3 年 1 月 2 日。同样,"01/02/-3" 解析为公元前 4 年 1 月 2 日。
Month: 如果模式字母的数量为 3 或大于 3,则将月份解释为 text;否则解释为 number。
2. 将字符串类型转换为Date
String strDate="2005年04月22日";
//注意:SimpleDateFormat构造函数的样式与strDate的样式必须相符
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日");
SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//加上时间
//必须捕获异常
try{
Date date=simpleDateFormat.parse(strDate);
ystem.out.println(date);
}catch(ParseException px)
px.printStackTrace();
}
3. 将毫秒数转换为日期类型
long now=System.currentTimeMillis();
System.out.println("毫秒数:"+now);
Date dNow=new Date(now);
System.out.println("日期类型:"+dNow);
4. 获取系统时期和时间,转换成SQL格式后更新到数据库
java.util.Date d=new java.util.Date(); //获取当前系统的时间
//格式化日期
SimpleDateFormat s= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = s.format(d); //转为字符串
5. 比较两个Date的大小
int i= compare_date("1995-11-12 15:21:20", "1999-12-11 09:59:20");
System.out.println("i=="+i);
public static int compare_date(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
System.out.println("dt1 在dt2前");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
System.out.println("dt1在dt2后");
return -1;
} else {
return 0;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}
转载于:https://blog.51cto.com/zhkpsty/1427009