simpledateformat 解析时间格式

1:defaultDateFormat("yyyy-MM-dd HH:mm:ss"),

2:defaultDateFormat("YYYY-MM-dd HH:mm:ss")

原来以为这两种格式一样,

结果很是诧异,1是正常,

2,结果一个到了去年,一个到了年底

2013-12-29 11:00:00
2014-12-29 11:00:00

估计问题应该是时间解析不能识别大写Y,

字母     日期或时间元素 表示 示例
G Era 标志符 Text AD
y Year 1996 ; 96
M 年中的月份 Month July ; Jul ; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday ; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time ; PST ; GMT-08:00
Z 时区 RFC 822 time zone -0800

代码如下:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class DateFormatUtils {  
/** 时间格式*/
private DateFormats dateFormats;

/**

* @ClassName: DateFormats 
* @Description: 时间格式
* @author xbt 
* @date 2015年2月8日 下午2:52:44
*/
    public enum DateFormats{
    defaultDateFormat("yyyy-MM-dd HH:mm:ss"),//默认时间格式,要用小写yyyy
    yyyymmddhhmmss_slash("yyyy/MM/dd HH:mm:ss"),
    yyyymmddFormat_hyphen("yyyy-MM-dd"),
    yyyymmddFormat_slash("yyyy/MM/dd"),
    yyyymmddhhmmFormat_hyphen("yyyy-MM-dd HH:mm"),
    yyyymmddhhmmFormat_slash("yyyy/MM/dd HH:mm");
   
    private String dateformatStr;
   
    private DateFormats(String dateformatStr){
    this.dateformatStr = dateformatStr;
    }
   
    @Override
    public String toString(){
    return this.dateformatStr;
    }
    }


   /**
    * 获取时间格式
    * 
    * @return DateFormats
    */
public DateFormats getDateFormats() {
return dateFormats;
}


/**
* 设置时间格式

* @param dateFormats
*             时间格式   
* @return void
*/
public void setDateFormats(DateFormats dateFormats) {
this.dateFormats = dateFormats;
}

/**
* 解析时间字符串

* @param defaultDateFormat,时间格式
* @param dateStr,时间字符串
* @return Date
*/
public static Date formateDate(DateFormats dateFormat,String dateStr){
return formatDate(dateFormat.dateformatStr, dateStr);
}

/**
* 解析时间字符串

* @param formatStr,时间格式字符串
* @param dateStr,时间字符串
* @return   
* @return Date
*/
private static Date formatDate(String formatStr,String dateStr){
SimpleDateFormat dateFormat = new SimpleDateFormat(formatStr);
Date date = null;
try {
date = dateFormat.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}

/**
* 将时间解析为时间字符串

* @param dateFormat,时间格式
* @param date,时间
* @return String
*/
public static String getFormatDateStr(DateFormats dateFormat,Date date){
return getFormatDateStr(dateFormat.dateformatStr, date);
}

/**
* 将时间解析为时间字符串

* @param formatStr,时间格式
* @param date,时间
* @return String
*/
private static String getFormatDateStr(String formatStr,Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat(formatStr);
String dateStr = dateFormat.format(date);
return dateStr;
}

public static void main(String args[]){
String dateStr = "2014-02-22 11:00:00";
System.out.println(formateDate(DateFormats.defaultDateFormat, dateStr).toLocaleString());
Date date = formateDate(DateFormats.defaultDateFormat, dateStr);
System.out.println(getFormatDateStr(DateFormats.defaultDateFormat, date));
}
}

你可能感兴趣的:(simpledateformat 解析时间格式)