java SimpleDateFormat

记录有关Java中格式化工具SimpleDateFormat类的使用:


  1. 将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' 都被保留):


wKiom1OesNOjjyeeAAKQPm8ZpSU085.jpg

模式字母通常是重复的,其数量确定其精确表示:

  • 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;
    }


你可能感兴趣的:(java,DateFormat)