1

日付と時刻を2012-11-0812:45:30として返す文字列があります。日付と時刻を別々の文字列で取得する必要があります。その後、電話の日付と時刻の設定にある形式で日付を表示する必要があります。これまでに試したコードは次のとおりです。dbからの日付値は2012-11-08 、電話の設定で日付形式を取得しています。

String datefrmt = Settings.System.getString(
                context.getContentResolver(), Settings.System.DATE_FORMAT);

この形式をdbから取得した日付に適用するコードは次のとおりです。

SimpleDateFormat sdf = new SimpleDateFormat(datefrmt);
java.util.Date date_1 = sdf.parse("2012-11-08");
String s = sdf.format(date_1);

私は月と日を正しく取得していますが、年はランダムに何かを返し、それは正しい値ではありません。誰かが私がどこで間違っているのか教えてもらえますか?ありがとう

4

4 に答える 4

0

simpleDateFormatは次のように使用できます。

 SimpleDateFormat simpDate = new SimpleDateFormat(datefrmt,
                    Locale.ENGLISH);
  String s = simpDate.format(new Date());

参考までに、開発者サイトを参照できます。

詳細については、このリンクを参照してください

于 2012-11-08T05:40:49.433 に答える
0

DBの日付はでyyyy-MM-ddあるため、動的形式を使用して日付を取得しないでください。そうしないと、クラッシュします(解析例外をスローします)。代わりに、以下の静的形式を使用して日付を取得します。動的フォーマットを使用して、次のように文字列を変換できます。

   //use static format to convert into date from static formatted data in db 
   SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
   java.util.Date date_1 = sdf1.parse("2012-11-08");//got the date

   //use the dynamic format to convert into string
   SimpleDateFormat sdf2 = new SimpleDateFormat(datefrmt);
   String s = sdf2.format(date_1);
于 2012-11-08T06:32:00.900 に答える
0

文字列が 2012-11-08 12:45:30あり、それをDateオブジェクトに解析して、その形式を別の形式(たとえば、システム形式または2012-11-08形式)に変更する場合:

try {
        String yourString="2012-11-08 12:45:30";

        //first we parse input date string and create Date object
        String inputDateString ="yyyy-dd-MM hh:mm:ss";
        SimpleDateFormat inputDateFormat = new SimpleDateFormat(inputDateString);
        java.util.Date  date = inputDateFormat.parse(yourString);

        //log
        Log.e(getClass().getName(), inputDateFormat.format(date));

        //create system date format 
        String dateformt = Settings.System.getString( this.getContentResolver(), Settings.System.DATE_FORMAT);
        //if its for some reason==null let it be "yyyy-dd-MM" 
        if(dateformt==null){
            dateformt="yyyy-dd-MM";
        }
        SimpleDateFormat systemDateFormat = new SimpleDateFormat(dateformt);
        String outputString = systemDateFormat.format(date);

        //log
        Log.e(getClass().getName(), outputString);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
于 2012-11-08T06:41:30.697 に答える
0

最終的な文字列形式=Settings.System.getString(getActivity()。getContentResolver()、Settings.System.DATE_FORMAT); // NULLの可能性がある
ため、関数を以下のように一般的な目的でカスタマイズしました

@SuppressLint("SimpleDateFormat")
public String getCurrentShortDateFormat() { 
    final String[] SFs = new String [] {
            "MM/dd/yyyy",
            "dd/MM/yyyy",
            "yyyy/MM/dd"
    }; 

    final Date date = new Date(24638400000L);//24638400000=Oct/13/1970; 0==Jan/1/1970
    java.text.DateFormat shortDateFormat = android.text.format.DateFormat.getDateFormat(getActivity().getApplicationContext());      
    String current = shortDateFormat.format(date);
    SimpleDateFormat which = new SimpleDateFormat();
    for (int i = 0; i < SFs.length; i++) {
        which.applyPattern(SFs[i]);
        if (which.format(date).compareTo(current)==0)
            return SFs[i];
    }
    return null;
}

@Override
public void onResume() {
    super.onResume(); 
    Log.d(LOG_TAG, "----- onResume.CurrentShortDateFormat-----" + getCurrentShortDateFormat());
}
于 2015-02-11T06:17:58.547 に答える