Formatting a calendar date

非 Y 不嫁゛ 提交于 2019-12-20 10:22:25

问题


I just want the date to show up like so:

Saturday, May 26, 2012 at 10:42 PM

Here's my code so far:

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

This shows the numbers of the month, day, and year, but there's got to be a better way of doing this? Isn't there some simple way of doing this like using PHP's date() function?


回答1:


Use the below to format the date as required. Refer this 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));

Where %1$tA for staurday, %1$tb for May,

and so on...




回答2:


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

Running the above code outputs the current time (e.g., Saturday, May 26, 2012 at 11:03 PM).

See the Android documentation for SimpleDateFormat for more information.

The format specification of SimpleDateFormat is similar to that of PHP's date function:

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

You're right. Compared to the Java code, the PHP code is much more succinct.




回答3:


This is actually a fairly subtle problem to get right, and I've not seen another answer here on SO that addresses both:

  • The Calendar's time zone (which means that it might be showing a different date than local)
  • The device's Locale (which affects the "right" way to format dates)

The previous answers to this question ignore locale, and other answers that involve conversion to a Date ignore the time zone. So here's a more complete, general solution:

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

Note that you need to use java.text.DateFormat here, not Android's own (confusingly-named) android.text.format.DateFormat.




回答4:


For me this works perfectly:

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)



来源:https://stackoverflow.com/questions/10771279/formatting-a-calendar-date

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!