16

日付を特定の文字列にフォーマットする必要があります。

SimpleDateFormatクラスを使用して、パターン " " を使用して日付をフォーマットしました。現在の日付は " "yyyy-MM-dd'T'HH:mm:ssZとして返されますが、
" 2013-01-04T15:51:45+0530" が必要です。
2013-01-04T15:51:45+05:30

以下は、使用されるコーディングです。

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH);      
Log.e(C.TAG, "formatted string: "+sdf.format(c.getTime()));

出力: フォーマットされた文字列:2013-01-04T15:51:45+0530

2013-01-04T15:51:45+05:30gmt 時間の間にコロンを追加するだけの形式が必要です。

私はイベントを挿入するためにGoogleカレンダーに取り組んでいるので、私が言及した必要なフォーマットのみを受け入れます.

4

10 に答える 10

33

パターンで「Z」の代わりに「ZZZZZ」を使用することもできます (ドキュメントによると)。このようなもの

    Calendar c = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ", Locale.ENGLISH);      
    Log.e(C.TAG, "formatted string: "+sdf.format(c.getTime()));
于 2015-08-05T11:03:07.203 に答える
14

代わりにJoda Timeを使用できます。それDateTimeFormatはあなたが望むことをするZZフォーマット属性を持っています。

リンク

大きな利点: とは異なりSimpleDateFormatDateTimeFormatterスレッドセーフです。使用法:

DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZZ")
    .withLocale(Locale.ENGLISH);
于 2013-01-04T12:53:22.443 に答える
1

これを試して

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH);   

System.out.println("formatted string: "+sdf.format(c.getTime()));

String text = sdf.format(c.getTime());  
String result = text.substring(0, 22) + ":" + text.substring(22);  
System.out.println("result = " + result);
于 2013-01-04T12:59:45.073 に答える
1

正規表現を使って手動でやらないのはなぜですか?

String oldDate = "2013-01-04T15:51:45+0530";
String newDate = oldDate.replaceAll("(\\+\\d\\d)(\\d\\d)", "$1:$2");

部分文字列を使用しても同じ結果になります (パフォーマンスが問題になる場合)。

String oldDate = "2013-01-04T15:51:45+0530";
int length = oldDate.length();
String newDate = oldDate.substring(0, length - 2) + ':' + oldDate.substring(length - 2);
于 2013-01-04T13:00:33.917 に答える
1

できることは、substring() を使用して手動で「:」を追加することです。以前にこれに直面しましたが、このソリューションは機能します。

于 2013-01-04T12:56:31.923 に答える
0

このコードを試してください

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss Z", Locale.ENGLISH);
String s = sdf.format(c.getTime());
String fDate = s.substring(0, s.length()-2) +":"+s.substring(s.length()-2, s.length());
Log.e("check", "formatted string: "+fDate);
于 2013-01-04T13:02:07.187 に答える