2011-10-26 20 views
0

私はJSONに来て日が以下の形式でフィードをしている:日付形式のJavaでの変換?

Wed, 26 OCT 2011 

どのように行うことができます

mm/dd/yyyy for example today's date 10/26/2011 

私のように、Infactは、詳細な日付形式で別の形式にそれを変換したいです私がする..???私はこれが非常に簡単かもしれないことを知っていますが、まだ初心者です、どんな助けもありがとうございます。

答えて

2

それは非常に教育的ではないのですが、ここにあなたの要求を処理する準備ができてソリューションです:

私の知る限り
String dateString = "10/26/2011"; 
String dateStringParsed = ""; 
SimpleDateFormat format1 = new SimpleDateFormat("MM/dd/yyyy"); 
SimpleDateFormat format2 = new SimpleDateFormat("EEE, dd MMM yyyy"); 

try { 
    Date parsed = format1.parse(dateString); 
    dateStringParsed = format2.format(parsed); 
} 
catch(ParseException pe) { 
    //handle the exception 
} 

、月の首都ではありませんSimpleDateFormatで利用可能です。必要であれば手動で変更する必要があります。

+0

OPは彼が必要とするように例外を処理させ、正しいパターンを提供する+1。 –

+0

ありがとうございます。経験豊富なユーザーからブラウンのポイントを得るのはいいです); – Moyshe

+0

@ Moyshe、それはあまり教育的ではないことは分かっていますが、私はフォーマットと混同しています。ご協力いただきありがとうございます..!!!! –

2

ここで私は自分のアンドロイドアプリでそれを正確に行う例です。

public String GetJustTime(String input){ 
    SimpleDateFormat curFormater = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); 
    Date dateObj = new Date(); 
     try { 
      dateObj = curFormater.parse(input); 
     } catch (ParseException e) {} 
     SimpleDateFormat postFormater = new SimpleDateFormat("h:mm a"); 
     String newDateStr = postFormater.format(dateObj); 

    return newDateStr; 
} 

必要に応じて2つのフォーマット文字列を変更してください。 最初のものは入力フォーマット用であり、2番目のものは出力用のフォーマットです。

「EEE、d MMM YYYY」という出力形式を使用していますが、今すぐテストすることはできません。

+1

あなたが渡された入力がcurFormaterに応じて有効な日付でない場合、あなただけ戻りますことを知っています引数として渡される日付の代わりに現在の日付?これは、ほとんどの場合、望ましくない深刻な副作用である。 –

+0

うん、それは私のアプリケーションで望ましい動作です。私が言ったように、それは私のコードから正しく来た。それに言及してくれてありがとう、私はそれを感謝します。 –

+0

最初のパターンは間違っています。これは、月の代わりに分を使用するためです。そして、あなたはJava命名規則を尊重しません。 –

1

SimpleDateFormatクラスをご覧ください。 hereから取られますが、これを使用する方法の一つの小さな例、:

String dateString = new String("07/12/2005"); 
java.util.Date dtDate = new Date(); 
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy"); 
SimpleDateFormat sdfAct = new SimpleDateFormat("dd/mm/yyyy"); 
try 
{ 
    dtDate = sdfAct.parse(dateString); 
    System.out.println("Date After parsing in required format:"+(sdf.format(dtDate))); 
} 
catch (ParseException e) 
{ 
    System.out.println("Unable to parse the date string"); 
    e.printStackTrace(); 
} 
+0

2番目の形式が間違っています。数ヶ月ではなく分を使用します。あなたの例外処理はひどいです。 –

+0

彼は私が元々持っていたのと同じ場所から彼の例を得たと思う:)それは非常によく知られているようだ。 –

+0

私は自分の反応でリンクした別のWebサイトからその例を得ました。私はコードを書いていない、私はちょうど正しい方向にOPを指したいと思った... – npinti

2

SimpleDateFormatのソリューションに加えて、JodaのDateTimeFormatter(org.joda.time.format.DateTimeFormatter)を使用した代替ソリューションを追加したかっただけです。これは、日付またはあなたのコードの時間。このソリューションは、実際には、すべてが1行にインライン化することができますが、明確にするため、ここで勃発表示:

String source = "10/26/2011"; 
String target = "Wed, 26 Oct 2011"; 

DateTimeFormatter sourceFormatter = DateTimeFormat.forPattern("MM/dd/yyyy"); 
DateTimeFormatter targetFormatter = DateTimeFormat.forPattern("E, dd MMM yyyy"); 

assertEquals(target, sourceFormatter.parseDateTime(source).toString(targetFormatter)); 
+0

ねえ..これもいい解決策です.....ありがとう!! –

関連する問題