我有以下代码将date / datetime的不同字符串表示转换为timestamp对象:
public class GeneralMethods {
public static String[] formats = {"dd/mm/yyyy","mm/dd/yyyy hh:mm:ss","E MMM dd HH:mm:ss zzz yyyy"};
/**
* a method to return timestamp object from string date in the formats
* {"dd/mm/yyyy HH:mm:ss","E MMM dd HH:mm:ss zzz yyyy","dd/mm/yyyy"}
* @param date: the date to format in string representation
* @return timestamp object
*/
public static Timestamp timestampFormat(String date)
{
Date dateObj = new Date();
for(String format: formats)
{
try
{
dateObj = new SimpleDateFormat(format).parse(date);
System.out.println(dateObj.toString()); // for tracking
}catch (ParseException e)
{
}
}
return new Timestamp(dateObj.getTime());
}
// testing
public static void main (String args[])
{
System.out.println(timestampFormat("05/31/2011 21:37:35"));
}
}
此代码的输出为:
Wed Jan 05 00:31:00 GMT 2011
Mon Jan 31 21:37:35 GMT 2011
2011-01-31 21:37:35.0
正如您可以看到输入中的月份输入错误05/31/2011 21:37:35。这是怎么回事?
答案 0 :(得分:2)
mm
只需几分钟MM
,因此根据您的模式设置分钟和月份默认设置为1月。
尝试将模式更改为"dd/MM/yyyy", "MM/dd/yyyy hh:mm:ss"