Как преобразовать строку datetime на сегодняшний день с помощью GWT?

В mysql у меня есть поле time_entered типа datetime (данные образца: 2012-06-20 16:00:47). У меня также есть метод getTimeEntered(), который возвращает значение как String. Я хочу показать дату в этом формате 2012-06-20, используя DateTimeFormat из GWT.

здесь мой код:

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

Проблема заключается в том, что метод format не принимает аргументы как String. Поэтому, если бы я мог конвертировать дату из типа String to Date, возможно, это сработало. Я пробовал приведение типов, но не работал.

Ответы

Ответ 1

Вы должны просто использовать 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");

Ответ 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;
    }
}

Ответ 3

Вы можете использовать это как.

    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

Ответ 4

Пробовав много раз, я придумал решение, основанное на @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);