我有一个 DateTimehelper.class ,其中我已经执行了一些与日期相关的操作,代码工作正常,直到我从客户那里得到他们的错误格式的日期问题。以下是我的班级:
public class DateTimeHelper {
private static Calendar cal;
public static DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static DateFormat shortDateFormatter = new SimpleDateFormat("yyyy-MM-dd");
public static DateFormat shortDateFormatterWithSlash = new SimpleDateFormat("dd/MM/yyyy");
public static DateFormat dateFormat_dd_MM_yyyy = new SimpleDateFormat("dd-MM-yyyy");
DateTimeHelper helper;
/**
* set UTC Date to the calendar instance
*
* @param strDate
* date to set
*/
public static void setDate(String strDate) {
try {
Date date = (Date) formatter.parse(strDate);
cal = Calendar.getInstance();
cal.setTime(date);
updateDateTime();
}
catch (ParseException e) {
e.printStackTrace();
}
}
/**
* update date every 1 second
*/
private static void updateDateTime() {
final Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
try {
cal.add(Calendar.SECOND, 1);
handler.postDelayed(this, 1000);
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
/***
* get updated date from calendar in custom date format
*
* @return date
*/
public static String getDate() {
String strDate = null;
try {
strDate = formatter.format(cal.getTime());
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return strDate;
}
}
当看到日志时,我发现日期的格式为:2014-0011-25 04:45:38
这是完全错误的,我猜因为月份应该是11而不是0011。
但是当我尝试使用以下函数验证此日期时,它表示日期有效。
public static boolean isValidDate(String inDate) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
try {
dateFormat.parse(inDate.trim());
} catch (ParseException pe) {
return false;
}
return true;
}
如何成为有效日期? 为什么我的格式错误?
此问题非常随机,因为它仅由用户报告,但我对 SimpleDateFormater 和 Calendar API的行为感到非常惊讶
请帮忙。
答案 0 :(得分:2)
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
试一试,看看它是否有效