6

私の日付は「2013-12-31」という形式の文字列です。これをユーザーのデバイス設定に基づいてローカル日付に変換したいのですが、月と日のみを表示します。したがって、ユーザーのデバイスがドイツ語に設定されている場合、日付は「31.12」に変換される必要があります。ドイツでは、日が最初に来て、次に月が来ます。年は入れたくない。

4

6 に答える 6

1

少し遅れて、私も同じ問題に直面しました。それが私がそれを解決した方法です:

String dayMonthDateString = getDayMonthDateString("2010-12-31", "yyyy-MM-dd", Locale.GERMANY);
Log.i("customDate", "dayMonthDateString = " + dayMonthDateString);


private String getDayMonthDateString(String dateString, String dateFormatString, Locale locale)
{
    try
    {
        boolean dayBeforeMonth = defineDayMonthOrder(locale);

        String calendarDate = dateString;
        SimpleDateFormat dateFormat = new SimpleDateFormat(dateFormatString);
        Date date = dateFormat.parse(calendarDate);

        SimpleDateFormat newDateFormat;

        if (dayBeforeMonth)
        {
            newDateFormat = new SimpleDateFormat("dd.MM", locale);
        }
        else
        {
            newDateFormat = new SimpleDateFormat("MM.dd", locale);
        }

        return newDateFormat.format(date);
    }
    catch (ParseException e)
    {
        e.printStackTrace();
    }

    return null;
}


private boolean defineDayMonthOrder(Locale locale) throws ParseException
{
    String day = "10";
    String month = "11";
    String year = "12";

    String calendarDate = day + "." + month + "." + year;

    SimpleDateFormat format = new SimpleDateFormat("dd.MM.yy");
    Date date = format.parse(calendarDate);

    String localizedDate = SimpleDateFormat.getDateInstance(SimpleDateFormat.SHORT, locale).format(date);

    int indexOfDay = localizedDate.indexOf(day);
    int indexOfMonth = localizedDate.indexOf(month);

    return indexOfDay < indexOfMonth ? true : false;
}

ソリューションに関するご質問があればお知らせください。

于 2016-07-21T16:01:38.937 に答える
0

これは機能します:

  String dtStart = "2010-12-31";
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  Date date = format.parse(dtStart);

  SimpleDateFormat df = (SimpleDateFormat)
  DateFormat.getDateInstance(DateFormat.SHORT);
  String pattern = df.toLocalizedPattern().replaceAll(".?[Yy].?", "");
  System.out.println(pattern);
  SimpleDateFormat mdf = new SimpleDateFormat(pattern);
  String localDate = mdf.format(date);
于 2013-10-22T15:37:49.197 に答える