3

タイムスタンプから時間だけを取得しようとすると問題が発生します。

タイムスタンプの例は次のとおりです。

2012-04-19T23:05:00 + 0200

フォーマットは「yyyy-MM-dd'T'HH:mm:ss.SSSZ」だと思いますよね?そしてそれは「HH:mm」でなければなりません。

次のコードを使用しましたが、何も返されません。

public String getTime(String Vertrektijd){
        final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        Date dateObj;
        String newDateStr = null;
        try
        {
            dateObj = df.parse(Vertrektijd);
            SimpleDateFormat fd = new SimpleDateFormat("HH:mm");
            newDateStr = fd.format(dateObj);
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
        return newDateStr;
    }

助けてくれてありがとう!

4

3 に答える 3

6

あなたのコードは正しいです...

例の時間では、質問で指定したもの (つまり、「2012-04-19T23:05:00+0200」) にミリ秒がありません

これを渡してみてください

getTime("2012-04-19T23:05:00.235+0200");

それはうまくいくはずです。

編集:MHが述べたように、ミリ秒を使用したくない場合は、コードを次のように変更できます

final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
于 2012-04-19T22:31:57.300 に答える
0

Java と Android が提供する、日付、時刻、およびタイムゾーンに関する紛らわしいすべてのクラスを要約する試みを以下に示します。基本的に、日付/時刻操作のほとんどは、GregorianCalendar オブジェクトを使用して行います。おそらく Calendar スーパークラスのメソッドを使用します。ロケール固有の書式設定を行うには、DateFormat が必要です。ただし、それは Date オブジェクトのみをフォーマットできるため、最初に Calendar/GregorianCalendar をそれらのいずれかに変換する必要があります。基本的に、SimpleDateFormat は、既に発見したように、カスタム フォーマットを行うためのものです。

「DateFormat」と呼ばれる 2 つの異なるクラスがあることに注意してください。

于 2012-04-22T09:43:33.273 に答える
0

Date には getHours() および getMinutes() 関数がありますが、非推奨です。適切な方法は、カレンダーを使用することです

Calendar calendar = Calendar.getInstance();
calendar.setTime( dateObj );
int hours = calendar.get( Calendar.HOUR_OF_DAY );
int minutes = calendar.get( Calendar.MINUTE );
于 2012-04-19T21:28:24.747 に答える