格式化日历日期

时间:2012-05-27 02:45:14

标签: android date formatting calendar

我只想让日期显示如下:

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

6 个答案:

答案 0 :(得分:87)

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 documentation for SimpleDateFormat

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

echo date("l, M j, Y \a\\t g:i A");
你是对的。与Java代码相比,PHP代码更加简洁。

答案 1 :(得分:16)

使用以下内容根据需要格式化日期。请参阅此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));

staurday的%1 $ tA, 5月份%1 $ tb,

依旧......

答案 2 :(得分:13)

这实际上是一个相当微妙的问题,而且我没有在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

答案 3 :(得分: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)

答案 4 :(得分:0)

更简单的答案:

    if (Input.GetKey(KeyCode.Z))
   {
        if (Input.GetKey(KeyCode.X))
        {
             Debug.Log("You just pressed Z then X !!");
        }
   }

答案 5 :(得分: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)
}