我将日期插入到数据库是这样的:

long d = cal.getTimeInMillis();
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
String time_string_f=dateFormat.format(d);


time_string_f是要插入数据库中的字符串,其输出类似于:

07/09/2015 20:47:00


我想从数据库中获取它,并将其格式化为12小时,其中包含am / pm。

所以我从here

DateTimeFormatter dtf = DateTimeFormat.forPattern("dd-MM-yyyy hh:mm:ss.SSa");
DateTime jodatime = dtf.parseDateTime(string_date_from_database);
int yy= jodatime.getYear();


我得到的一年只是检查它是否有效。

但它不起作用,并给我这个错误:

07-09 22:34:48.399: I/FFFFF(7165): Invalid format: "07/09/2015 20:47:00" is malformed     at "/09/2015 20:47:00"

最佳答案

数据库中的值格式为MM/dd/yyyy HH:mm:ss-不带AM / PM后缀。
因此,您应该解析没有a选项的日期,然后将日期转换为12小时格式。
例:

   String string_date_from_database = "07/09/2015 20:47:00";
   DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
   DateTime jodatime = dtf.parseDateTime(string_date_from_database);
   String dateIn12HourFormat = jodatime.toString("MM/dd/yyyy hh:mm:ssa");
   // Now 'dateIn12HourFormat' looks like `07/09/2015 08:47:00PM`


您可以使用简单的实用程序方法:

   static final DateTimeFormatter hours24 = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
   static final DateTimeFormatter hours12 = DateTimeFormat.forPattern("MM/dd/yyyy hh:mm:ssa");
   static String convertTo12HoursFormat(String format24hours)
   {
      return hours12.print(hours24.parseDateTime(format24hours));
   }


用法:

   String string_date_from_database = "07/09/2015 20:47:00";
   String dateIn12HourFormat = convertTo12HoursFormat(string_date_from_database);

关于android - Android joda时间从24转换为12,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24662584/

10-09 13:44