格式化日历date

我只想让date显示如下:

Saturday, May 26, 2012 at 10:42 PM

这是我的代码到目前为止:

 Calendar calendar = Calendar.getInstance(); String theDate = calendar.get(Calendar.MONTH) + " " + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.YEAR); lastclick.setText(getString(R.string.lastclick) + " " + theDate); 

这显示了月份,date和年份的数字,但是这样做有更好的方法吗? 是不是有一些简单的方法来做这个像使用PHP的date()函数?

Solutions Collecting From Web of "格式化日历date"

使用下面的格式来根据需要设置date。 参考这个链接

  Calendar calendar = Calendar.getInstance(); lastclick.setText(getString(R.string.lastclick) + " " + String.format("%1$tA %1$tb %1$td %1$tY at %1$tI:%1$tM %1$Tp", calendar)); 

星期五的%1 $ tA,五月份的%1 $ tb,

等等…

 Calendar calendar = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("EEEE, MMMM d, yyyy 'at' h:mm a"); System.out.println(format.format(calendar.getTime())); 

运行上述代码输出当前时间(例如Saturday, May 26, 2012 at 11:03 PM )。

有关更多信息,请参阅SimpleDateFormat的Android文档 。

SimpleDateFormat的格式规范类似于PHP的date函数:

 echo date("l, M j, Y \a\\tg:i A"); 

你是对的。 与Java代码相比,PHP代码更为简洁。

这实际上是一个相当微妙的问题得到正确的,我还没有看到在这个问题上的另一个答案,解决这两个问题:

  • Calendar的时区(这意味着它可能会显示与本地不同的date)
  • 该设备的Locale (影响“正确”的方式来格式化date)

此问题的以前的答案忽略语言环境,其他涉及转换为Date答案忽略时区。 所以这是一个更完整的通用解决scheme:

 Calendar cal = Calendar.getInstance(); // the value to be formatted java.text.DateFormat formatter = java.text.DateFormat.getDateInstance( java.text.DateFormat.LONG); // one of SHORT, MEDIUM, LONG, FULL, or DEFAULT formatter.setTimeZone(cal.getTimeZone()); String formatted = formatter.format(cal.getTime()); 

请注意,您需要在这里使用java.text.DateFormat ,而不是Android自己的(易混淆命名的) android.text.format.DateFormat