格式化日历日期(Formatting a calendar date)

2019-07-29 13:59发布

我只想日现身像这样:

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);

这表明,月,日和年的数字,但一定是这样做的更好的办法? 是不是有这样做就像使用PHP的一些简单的方法date()函数?

Answer 1:

使用下面根据需要格式化日期。 请参阅本LINK

 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的staurday,%$ 1 TB五月,

等等...



Answer 2:

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 )。

请参阅用于Android文档SimpleDateFormat以获取更多信息。

的格式规范SimpleDateFormat类似于PHP的的date功能:

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

你是对的。 比起Java代码,PHP代码更加简洁。



Answer 3:

这实际上是一个相当微妙的问题得到正确的,我从来没见过这里SO另一个答案,解决两个:

  • Calendar (这意味着它可能会呈现出不同的日期比本地)的时区
  • 该器件的Locale (这影响了“正确”的方式格式化日期)

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

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



文章来源: Formatting a calendar date