Преобразование значения времени для форматирования «hh: mm Am / Pm» с помощью Android

Я получаю значение даты из базы данных, например «2013-02-27 06:06:30», используя StringTokenizer. Я получаю время отдельно, как показано ниже.

String startTime = "2013-02-27 06:06:30"; StringTokenizer token = new StringTokenizer(startTime); String date1 = token.nextToken(); String time1 = token.nextToken(); 

и вовремя1 я получаю результат 06:06:30,

Могу ли я повторно сохранить его в другой переменной типа String следующим образом?

 String displayValue = "06:06 AM"; 

И если переменная time1 имеет значение

 String time = 16:00:00; 

то он должен быть преобразован в:

 String displayValue = "04:00 PM"; 

    Попробуй это..

     Date dt = new Date(date1); SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa"); String time1 = sdf.format(dt); 

    Я получил ответ, просто так.

      startTime = "2013-02-27 21:06:30"; StringTokenizer tk = new StringTokenizer(startTime); String date = tk.nextToken(); String time = tk.nextToken(); SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss"); SimpleDateFormat sdfs = new SimpleDateFormat("hh:mm a"); Date dt; try { dt = sdf.parse(time); System.out.println("Time Display: " + sdfs.format(dt)); // <-- I got result here } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

    Сначала вам не нужно использовать StringTokenizer для получения строкового времени. Просто передайте свой startTime следующим образом:

     // Get date from string SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = dateFormatter.parse(startTime); // Get time from date SimpleDateFormat timeFormatter = new SimpleDateFormat("h:mm a"); String displayValue = timeFormatter.format(date); // Done! 

    Попробуй это

      String time = "22:35"; try { SimpleDateFormat sdf = new SimpleDateFormat("H:mm"); Date dateObj = sdf.parse(time); System.out.println(dateObj); System.out.println(new SimpleDateFormat("K:mm").format(dateObj)); } catch (final ParseException e) { e.printStackTrace(); } 

    Отслеживайте эту ссылку http://developer.android.com/reference/java/text/SimpleDateFormat.html

    1 Предполагая, что вам нужно показать текущее время в формате 09:30 вечера . Это был бы довольно простой подход. Даже если вы не требуете этого в течение текущего времени, вы должны иметь возможность использовать нижеприведенный DateFormat для своих требований.

     Calendar cal = Calendar.getInstance(); DateFormat outputFormat = new SimpleDateFormat("KK:mm a"); String formattedTime = outputFormat.format(cal.getTime()); 

    2 Примечание . Следующий форматтер можно использовать для отображения того же времени в 24-часовом формате ( 21:30 ).

     new SimpleDateFormat("HH:mm"); 

    3 Однако если вы хотите создать тот же формат, что и в моей первой точке, лучше использовать следующий код, поскольку Java не рекомендует использовать StringTokenizer . Вы можете прочитать об этом здесь, http://docs.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html

    Надеюсь, это поможет вам, спасибо!

      String startTime = "2013-02-27 21:06:30"; String[] parts = startTime.split(" "); DateFormat outputFormat = new SimpleDateFormat("KK:mm a"); SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm:ss"); try { Date dt = parseFormat.parse(parts[1]); System.out.println(outputFormat.format(dt)); } catch(ParseException exc) { exc.printStackTrace(); } 
     Date dt = new Date(date1); SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa"); String time1 = sdf.format(dt); 

    выход 2,00 утра

      Date dt = new Date(date1); SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US); String time1 = sdf.format(dt); 

    выход 2.00 AM

    Я рекомендую использовать DateFormat, например SimpleDateFormat

     try { String timeLong = "2013-02-27 06:06:30"; String timeShort = "16:06 AM"; SimpleDateFormat formatLong = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); SimpleDateFormat formatShort = new SimpleDateFormat("hh:mm aa", Locale.US); Log.v("out", formatShort.format(formatLong.parse(timeLong))); Log.v("out", formatShort.format(formatShort.parse(timeShort))); } catch (ParseException e) { e.printStackTrace(); } 

    Я устал сегодня, и я чувствую, что у меня что-то отсутствует в этом коде, поэтому я могу изменить его позже, но он работает, и он (напрямую) не вызывает устаревший class Date.

    На Android у вас также есть DateFormat

    Давайте будем гением компьютера.