SimpleDateFormat返回24小时date:如何获得12小时date?

我需要毫秒的当前时间,然后以12小时的格式存储它,但是用这段代码我得到24小时格式化的时间。

long timeInMillis = System.currentTimeMillis(); Calendar cal1 = Calendar.getInstance(); cal1.setTimeInMillis(timeInMillis); SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy HH:mm:ss a"); dateforrow = dateFormat.format(cal1.getTime()); 

有人可以build议修改,以获得预期的结果吗?

HH hh

 long timeInMillis = System.currentTimeMillis(); Calendar cal1 = Calendar.getInstance(); cal1.setTimeInMillis(timeInMillis); SimpleDateFormat dateFormat = new SimpleDateFormat( "dd/MM/yyyy hh:mm:ss a"); dateforrow = dateFormat.format(cal1.getTime()); 

请注意, dd/mm/yyyy – 会给你分钟而不是月份

引用SimpleDataFormat JavaDoc :

 Letter | Date or Time Component | Presentation | Examples --------------------------------------------------------- H | Hour in day (0-23) | Number | 0 h | Hour in am/pm (1-12) | Number | 12 

您好我testing下面的代码工作正常:

  long timeInMillis = System.currentTimeMillis(); Calendar cal1 = Calendar.getInstance(); cal1.setTimeInMillis(timeInMillis); SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss a"); dateFormat.format(cal1.getTime()); 

我也很难再遇到这个问题。 H对H,24小时对12小时!

是的,证实简单地使用HH而不是HH修复了我的问题。

由此改变:

 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm aa"); 

对此:

 SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa"); 

如果您不想打扰存储和处理AM / PM,您仍然可以使用HH存储时间。 那么当你检索它时,使用hh。

 SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss a"); 

hh代替HH

你可以试试这个

  Calendar c= Calendar.getInstance(); SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a"); String str=sdf.format(c.getTime()); 

看下面的代码示例:

 SimpleDateFormat df = new SimpleDateFormat("hh:mm"); String formattedDate = df.format(new Date()); out.println(formattedDate);