6

入力日時文字列があります:

2012-06-04 15:41:28

いろいろな国にきちんと表示したいです。たとえば、ヨーロッパではdd.MM.yyyyがありますが、米国ではMM / dd/yyyyを使用しています。

私の現在のコードは次のようなものです:

TextView timedate = (TextView) v.findViewById(R.id.report_date);
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); 
curFormater.setTimeZone(TimeZone.getDefault());
Date dateObj = curFormater.parse(my_input_string); 
timedate.setText(dateObj.toLocaleString());

しかし、それは私が望むように正確には機能しません(私の電話でも、「2012年6月4日15:41:28」のような「均一な」結果が常に得られます)。私は何が間違っているのですか?

4

3 に答える 3

4

これを試して:

TextView timedate = (TextView) v.findViewById(R.id.report_date);
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); 
curFormater.setTimeZone(TimeZone.getDefault());
Date dateObj = curFormater.parse(my_input_string);

int datestyle = DateFormat.SHORT; // try also MEDIUM, and FULL
int timestyle = DateFormat.MEDIUM;
DateFormat df = DateFormat.getDateTimeInstance(datestyle, timestyle, Locale.getDefault());

timedate.setText(df.format(dateObj)); // ex. Slovene: 23. okt. 2014 20:34:45
于 2014-10-23T18:35:27.780 に答える
2

現在のロケール(デバイスロケール!)で現在の日付を取得する最も簡単な方法:

String currentDate = DateFormat.getDateInstance().format(Calendar.getInstance().getTime());

さまざまなスタイルの日付が必要な場合は、次を使用してgetDateInstance(int style)ください。

DateFormat.getDateInstance(DateFormat.FULL).format(Calendar.getInstance().getTime());

その他のスタイル:DateFormat.LONG、、、DateFormat.DATE_FIELDなどDateFormat.DAY_OF_YEAR_FIELD(CTRL +スペースを使用してすべてを表示)

あなたも時間が必要な場合:

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime());
于 2014-11-05T12:08:21.377 に答える
0

このバリアントを試しましたか:

   SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US);
   System.err.format("%30s %s\n", format, sdf.format(new Date(0)));
   sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

ドキュメントから入手しました。私はformat()方法を使用することを意味します。

于 2012-06-04T16:43:22.493 に答える