如何以语言独立的方式格式化日期时间?

时间:2014-12-09 02:12:56

标签: java calendar string-formatting

我需要以这种格式显示日期和时间,日期:12月9日,时间:19:20

虽然我的下列代码在英文中运行良好,但不知道这是我的应用程序支持的其他语言的正确方法,如中文,泰文等。任何想法都会受到赞赏吗?感谢

这是我的代码:

private String getFormattedTime(Calendar calendar)
{
   int hour = calendar.get(Calendar.HOUR_OF_DAY);
   int minute = calendar.get(Calendar.MINUTE);

   StringBuilder sBuilder = new StringBuilder(4);
   sBuilder.append(hour);
   sBuilder.append(":");

   // We want to display the hour like this: 12:09,
   // but by not using following code it becomes 12:9
   if (minute < 10)
   {
      sBuilder.append("0");
   }
   sBuilder.append(minute);

   return sBuilder.toString();
}

private String getDateSuffix( int day)
{
   if (day < 1 || day > 31)
   {
      throw new IllegalArgumentException("Illegal day of month");
   }

   switch (day)
   {
      case 1:
      case 21:
      case 31:
      return ("st");

      case 2:
      case 22:
      return ("nd");

      case 3:
      case 23:
      return ("rd");

      default:
      return ("th");
    }
}

2 个答案:

答案 0 :(得分:0)

我根据@MadProgrammer所说的做了一些研究,这是我的代码,对于那些有同样问题的人。 DateFormat and SimpleDateFormat Examples

private String getFormattedDate(Calendar calendar)
    {
        Date date = calendar.getTime(); // out: Dec 9, 2014

        //        String str = DateFormat.getDateInstance().format(date);
        //        Log.d(TAG, str);

        String str = new SimpleDateFormat("MMM d").format(date);
        //        Log.d(TAG, str);

        return str;
    }

private String getFormattedTime(Calendar calendar)
    {
        Date date = calendar.getTime();

        String str = DateFormat.getTimeInstance(DateFormat.SHORT).format(date);
        //        Log.d(TAG, str);

        return str;
    }

答案 1 :(得分:0)

我建议您使用Joda Time。

以下是他们Quick Start Guide的示例。

  DateTime dt = new DateTime();
  String monthName = dt.monthOfYear().getAsText();
  String frenchShortName = dt.monthOfYear().getAsShortText(Locale.FRENCH);

虽然“Dec”可能意味着12月或12月,但Joda将使用正确的,取决于Locale

由于Locale.CHINESELocale.THAI可用,它会为您进行翻译。

如果您使用Java 8,Joda comes with the package

如果你使用这个包,你将为自己节省大量的工作。