42

我只希望日期显示如下:

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()函数?

4

6 回答 6

118
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

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

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

你是对的。与 Java 代码相比,PHP 代码要简洁得多。

于 2012-05-27T02:50:41.727 回答
21

根据需要使用以下格式设置日期。参考这个链接

 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 代表 5 月,

等等...

于 2012-05-27T02:51:39.110 回答
15

这实际上是一个相当微妙的问题,而且我还没有在 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自己的(confusingly-named) android.text.format.DateFormat

于 2016-02-20T19:24:44.820 回答
0

对我来说,这非常有效:

val cal = Calendar.getInstance()

val pattern = "EEEE, MMMM d, yyyy 'at' h:mm a"
val primaryLocale = getLocales(resources.configuration).get(0)
val dateFormat = SimpleDateFormat(dateFormatPattern, primaryLocale)

val formatedDate: String = dateFormat.format(cal.time)

于 2019-10-17T12:34:51.957 回答
0

更简单的答案:

SimpleDateFormat.getDateTimeInstance().format(cal.getTime())
于 2020-04-11T12:37:35.000 回答
0

我使用这个解决方案,它混合了其他答案,还包括时间

您可以将DateFormat.SHORT部件自定义为其他常量以显示更多/不同的细节

在我的设备上导致了这一点:17/07/2021 04:11

您可以简单地通过Calendar.getInstance()以获取当前时间

fun formatDateTime(calendar: Calendar):String{
    val formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT)
    formatter.timeZone = calendar.timeZone
    return formatter.format(calendar.time)
}
于 2021-07-02T23:01:35.580 回答