2016-03-23 23 views
-2

以下のタイムスタンプから時間+分を抽出しようとしています。 Javaのタイムスタンプから時間と分を取得する

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
Date date = sdf.parse("2016-03-23 18:08:59"); 

SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm"); 
sdf2.setTimeZone(TimeZone.getTimeZone("UTC")); 
String dateStr = sdf2.format(date); 

しかし、私は "未処理の例外:Java.text.parseException" を得る:私はこれを試してみました。この行で:

Date date = sdf.parse(myTimeStampString);

は、誰もがここで私を助けることはできますか?

+0

変数myTimeStampStringの値は何ですか? – applecrusher

+0

@ user1917363それはすでに質問にあります – 4castle

+0

私は私の質問の最初の行で述べたようなものです。 – progNewbie

答えて

0

"18:08"の文字列の一部を取得したいが、タイムゾーンに従って調整したくない場合は、文字列のその部分を抽出するためにString#substring(start, end)を使用することができます。

String fullTime = "2016-03-23 18:08:59"; 
String timeStr = fullTime.substring(11, 16); //extract "HH:mm" from "yyyy-MM-dd HH:mm:ss" 

あなたがをDO 場合はtryブロックを追加し、時間帯に応じて調整したいです。

String fullTime = "2016-03-23 18:08:59"; 
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), 
      df2 = new SimpleDateFormat("HH:mm"); 
df1.setTimeZone(TimeZone.getTimeZone("UTC")); 
df2.setTimeZone(TimeZone.getTimeZone("IST")); 
String timeStr = ""; 
try { 
    timeStr = df2.format(df1.parse(fullTime)); //parse throws ParseException 
} catch (ParseException e) { /* handle this */ } 

このコードは、タイムゾーンを調整した後"HH:mm"の値にtimeStrを変更するために入力として先頭に変数をとります。

+1

私はこれを考慮しましたが、私はそれが悪いスタイルか安全ではないと思いました。 – progNewbie

+0

日付オブジェクトから、またはユーザー入力ではない安全な場所から日付文字列を取得すると、安全ではありません。あなたはそれが何をしているのか正確に記述していますが、コードにコメントを入れるべきです。 – 4castle

+1

私はあなたが 'substring'なしでそれをしてコードを適合させる方法を示すように私の答えを更新しました。 – 4castle

3

あなたの質問の表現方法からは明らかではありませんが、唯一合理的な説明は例外がスローされないということですが、コンパイラエラーを参照しています。

ParseExceptionはチェック例外です。ソースコードで処理する必要があります。それ以外の場合はコンパイルされません。どのコンパイラを使用しているのかわかりませんが、OracleのJDKのJavaコンパイラは、より詳細なエラー記述を提供します。

error: unreported exception ParseException; must be caught or declared to be thrown

+0

ああ、そのコードがうまくいかなかった理由を説明しています。なぜなら、うまくいきました。 tryブロックに入れるだけです。 – 4castle

+0

しかし、時刻はまだ12時間に変換されています。これを修正するには、 'HH'を' kk'に変更して、入力を24時間形式にするだけです。 – 4castle

+0

@ 4castleあなたは何を意味するのかよく分かりません。問題は、ParseExceptionに関するもので、12/24時間の違いに関する問題ではありません。 HHおよびkkパターンは24時間ベースで、HHは時間を0-23、kkを1-24としてフォーマットします。 – jarnbjo

関連する問題