3

Javaには、次のような時間/日付を解析する組み込みの方法が付属しているかどうか疑問に思っていました:

5m1w5d3h10m15s

5ヶ月1週間5日3時間10分15秒です。

4

6 に答える 6

9

はい、それはSimpleDateFormatと呼ばれます。パターンを定義するだけです。

あなたは(自発的に?)年を正確に言わなかったので、私は1つ追加しました:

DateFormat df = new SimpleDateFormat("M'm'W'w'F'd'H'h'm'm's's'yyyy");
System.out.println(df.parse("5m1w5d3h10m15s"+"2012"));

もちろん、利用可能なライブラリがいくつかあります(多くの人が、標準的で紛らわしい Java ライブラリよりも優れた Joda にリダイレクトします)が、「Java に時刻/日付を解析する方法が組み込まれている場合」に関する質問であるため、答えは明確なはい。

于 2012-10-08T18:52:23.237 に答える
2

おそらく、これを期間に解析したいと思うでしょう。入力が「2012y10m8d」などのように見えない限り、Date ではなく。ある期間を java.util.Date として表現しようとすると、多くの問題が発生することが予想されます。私を信じてください、私は以前にその道をたどりました。

代わりに、期間に Joda 時間を使用することを検討してください。詳細については、この質問を参照してください: Joda time で "-8y5d" のような文字列を Period オブジェクトに解析するにはどうすればよいですか

HumanTimeも面白そうです。

于 2012-10-08T18:50:08.863 に答える
1

私は最初に文字列を逆にします。次に、文字列を 6 つの数値の個別の部分 (月、週、日、時間、分、秒) にトークン化します。各トークンを配列に格納し、各要素を個別に扱います: a[0] = 秒、a[1] = 分、... a[5] = 月。あなたのためにこれを行うライブラリを思い出すことができないので、それは私がオフハンドで考えることができる最も直感的な方法です. そしてもちろん、「解析」の意味を特定していません。

于 2012-10-08T19:02:42.903 に答える
0

その特定の形式についてはわかりません...しかし、これをご覧になることをお勧めします

また、独自のパーサーを作成することもそれほど難しくありません...

于 2012-10-08T18:51:07.960 に答える
0

アイデアについては、この投稿を参照できます: Java 日付形式 - 追加文字を含む

そしてもちろん、参照用の SimpleDateFormat クラス。 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

于 2012-10-08T18:54:29.537 に答える
0

SimpleDateFormatter クラスを使用すると、文字列を日付に変換するのに役立ちます。Joda time PeriodFormatter を使用すると、日付の代わりに期間を変換/表現できます。例えば。次のようなものを表現して解析することもでき15m1w5d3h10m15sます。

于 2012-10-08T18:56:57.163 に答える