2017-11-06 26 views
-4

を使用して日付を私はSimpleDateFormatを通じてDatestring"Nov 6, 2017 11:47:53 AM"を解析しようとしているが、私は使用する正しいフォーマットを見つけることができませんよ。誰かが私を助けることができますか?解析文字列のSimpleDateFormat

+1

あなたが試したこととエラー/問題は何かを示してください。あなたが今質問する方法は、誰かがあなたを助けてくれるのではなく、あなたの代わりにやりたいからです。 –

+1

問題を特定するためにここにコードを貼り付けてください。 –

+0

あなたのためのヒント:誰かが新しい回答を入力するのを待つよりも、既存の質問と回答を検索することで、より迅速に回答を見つけることができます。 –

答えて

2

ことができるはずテンプレートこのテキストを解析するには、1-12の時間帯があると仮定して、MMM d, yyyy hh:mm:ss aです。それらが0-11の範囲内にある場合、hhKKに置き換えます。

1

使用 "MMM ddと、HH YYYY:MM:SSのAAA"

public class Tester { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Date date = new Date(); 
     //Nov 6, 2017 11:47:53 AM 
     SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss aaa"); 
     //sdf.parse(source); 
     System.out.println(sdf.format(date)); 
    } 

} 

出力:

2017年11月6日午前四時35分20秒AM

0

Androidの場合でも、古くなった長いクラスDateと特にSimpleDateFormatを削除することを検討する価値はありますが、かなり面倒です。私はThreeTenABPを得ることをお勧めします。 Android上で最新のJava日時APIを使用することができます(APIが最初に記述されたJSR-310では3つです)。

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMM d, uuuu h:mm:ss a", Locale.ENGLISH); 
    String stringToParse = "Nov 6, 2017 11:47:53 AM"; 
    LocalDateTime dateTime = LocalDateTime.parse(stringToParse, dtf); 

結果は2017-11-06T11:47:53LocalDateTimeです。

どうしても一部のレガシーAPIのための古風なDateオブジェクトが必要な場合は、あなたが行うことがあります。this question: How to use ThreeTenABP in Android ProjectでThreTenABPを使用してについて多くあり

Date oldfashionedDate = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());