在mysql中,我有一个time_entered类型为datetime(示例数据:2012-06-20 16:00:47)。我还有一个方法getTimeEntered(),它返回值为String。我想使用GWT的DateTimeFormat以2012-06-20格式显示日期。
这是我的代码:
String date = aprHeaderDW.getTimeEntered();
DateTimeFormat fmt = DateTimeFormat.getFormat("MM-dd-yyyy");
dateEntered.setText("" + fmt.format(date));
问题是,format方法不接受String参数。因此,如果只有一种方法可以将日期从String转换为Date类型,那么它可能会起作用。我尝试了类型转换,但没有工作。
答案 0 :(得分:27)
您应该只能使用DateTimeFormat。
Date date = DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss").parse("2012-06-20 16:00:47");
String dateString = DateTimeFormat.getFormat("yyyy-MM-dd").format(date);
否则会有light-weight version of SimpleDateFormat支持此模式。
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2012-06-20 16:00:47");
答案 1 :(得分:2)
您好有两种选择。
第一个是因为它已经是一个字符串,你可以使用正则表达式来修改格式。
第二种是使用SimpleDateFormater,您可以将字符串解析为日期然后再将其解析。 例如:
public class DateMerge {
public static void main(String arg[])
{
String out = dateConvert("2012-06-20 16:00:47");
System.out.println(out);
}
public static String dateConvert (String inDate)
{
try {
DateFormat formatter ;
Date date ;
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = (Date)formatter.parse(inDate);
formatter = new SimpleDateFormat("dd-MM-yyyy");
String outDate = formatter.format(date);
return outDate;
} catch (ParseException e)
{System.out.println("Exception :"+e); }
return null;
}
}
答案 2 :(得分:2)
您可以这样使用。
String date = "2012-06-20 16:00:47";
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
String lDate=sf.format(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date));
System.out.println(lDate);
<强>输出:强>
2012-06-20
答案 3 :(得分:0)
经过多次尝试后,我想出了一个基于@Keppil并添加自己代码的解决方案。
这是Keppil建议的将字符串日期时间转换为日期类型的解决方案:
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2012-06-20 16:00:47");
...但我的第二个要求是只显示2012-06-20之类的日期。即使我删除了HH:mm:ss,它仍然显示时间,如2012-06-20 00:00:00。
这是我的最终解决方案:
Date date = null;
String d = rs.getString(SQL_CREATION_TIME); // assigns datetime value from mysql
// parse String datetime to Date
try {
date = new SimpleDateFormat("yyyy-MM-dd").parse(d);
System.out.println("time entered: "+ date);
} catch (ParseException e) { e.printStackTrace(); }
// format the Date object then assigns to String
Format formatter;
formatter = new SimpleDateFormat("yyyy-MM-dd");
String s = formatter.format(date);