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,

字母    日期或时间元素表示示例
GEra 标志符TextAD
yYear1996 ; 96
M年中的月份MonthJuly ; Jul ; 07
w年中的周数Number27
W月份中的周数Number2
D年中的天数Number189
d月份中的天数Number10
F月份中的星期Number2
E星期中的天数TextTuesday ; Tue
aAm/pm 标记TextPM
H一天中的小时数(0-23)Number0
k一天中的小时数(1-24)Number24
Kam/pm 中的小时数(0-11)Number0
ham/pm 中的小时数(1-12)Number12
m小时中的分钟数Number30
s分钟中的秒数Number55
S毫秒数Number978
z时区General time zonePacific 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));
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值