16

在 mysql 中,我有一个 datetime 类型的字段 time_entered(示例数据:2012-06-20 16:00:47)。我还有一个方法 getTimeEntered(),它以字符串形式返回值。我想使用 GWT 中的 DateTimeFormat 以 2012-06-20 格式显示日期。

这是我的代码:

String date = aprHeaderDW.getTimeEntered();
DateTimeFormat fmt = DateTimeFormat.getFormat("MM-dd-yyyy");
dateEntered.setText("" + fmt.format(date));

问题是,格式方法不接受字符串形式的参数。因此,如果只有一种方法可以将日期从 String 类型转换为 Date 类型,它可能会起作用。我尝试了类型转换,但没有奏效。

4

4 回答 4

28

您应该可以只使用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);

否则,有一个支持此模式的 SimpleDateFormat 的轻量级版本。

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2012-06-20 16:00:47");
于 2012-07-05T10:50:13.153 回答
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;
    }
}
于 2012-07-05T11:01:39.593 回答
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
于 2012-07-05T11:08:00.807 回答
0

在尝试了很多次之后,我想出了一个基于@Keppil 并添加我自己的代码的解决方案。

这是 Keppil 建议的将 String datetime 转换为 Date 类型的解决方案:

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);
于 2012-07-06T15:45:29.527 回答