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