0

HH:mm:ssSimpleDateFormat を使用してこの文字列を日付オブジェクトに変換し、必要に応じてタイムゾーンを変更し、24 時間から 12 時間に変換する形式でタイムスタンプを提供する Web サービスからデータを取得しています。

問題: 午前 12 時の時刻が入力されると、このように表示さ れるので、結果を取得する00:00:00 と 12:05 は次のようになります。00:05:00

に供給され22:00:00た回数00:01:00

に取得10:00 pmした回数0:01 am

私はそれを修正する方法があるかどうかを見回してきましたが、時間の場所に0がある場合は、特別なケースを作成して自分で文字列を解析する必要があると感じています.

どんな助けでも大歓迎です。

public String parseTime(String time) {
    String mTime = null;
    TimeZone thisTimeZone = TimeZone.getDefault();
    TimeZone ourTimeZone = TimeZone.getTimeZone("America/Los_Angeles");
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.US);
    SimpleDateFormat sdfThisTimeZone = new SimpleDateFormat("K:mm:a",
            Locale.getDefault());

    Date date = null;
    sdfThisTimeZone.setTimeZone(thisTimeZone);
    sdf.setTimeZone(ourTimeZone);
    try {
        date = sdf.parse(time);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mTime = sdfThisTimeZone.format(date.getTime());
//**********************************New: Does Not Work********************************
            DecimalFormat nft = new DecimalFormat("00"); mTime = nft.format(mTime);
//**********************************New **********************************************
    return mTime;
}

DecimalFormat を使用して行を試しましたが、今のところコードにコピーして、機能するかどうかを確認しました。残念ながら、アプリがクラッシュしました。私が投稿したコードは非同期タスク内で実行されるため、それが違いを生むかどうかはわかりませんが、それでも助けてくれてありがとう. 最終的に私はこれを解決します。しかし今のところ、午前 12 時の 1 時間だけ発生する非常に小さな詳細であるため、より大きな問題に移っています。誰かがこれに光を当てることができれば、それは素晴らしいことです.

4

1 に答える 1

0

String getConvertedDateTime (String dateTime) {

    String convertedDateTime = dateTime;

    if (convertedDateTime != null

            && !convertedDateTime.equalsIgnoreCase("")

            && !convertedDateTime.equalsIgnoreCase("null")) {

        try {

            SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");

            Calendar calendar = Calendar.getInstance();

            java.util.Date convertedDate = formatter
                    .parse(convertedDateTime);
        formatter.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
        convertedDateTime = formatter.format(convertedDate.getTime());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return convertedDateTime;
}
于 2013-01-17T08:04:49.103 に答える