2016-06-22 20 views
2

DAOインターフェイスを使用してオブジェクトにアクセスするには、shannahのデータアクセスライブラリを使用しています。解析日、CETとCEST、無効なTimeZone、解析不可能

私のものがデータベースに入ったらunmapメソッドが呼び出されたとき、私は日付の値を解析すると非常に奇妙な動作に直面します。それだけで私はこれらの

としてDateFormat'sを定義し...

java.lang.RuntimeException: Failed to parse string date format Thu Mar 31 00:00:00 CEST 2016. Could not find appropriate format parser. 

を、私はそれを解析するNumberUtil.dateValueメソッドを使用しようとしましたが、それはまだ失敗CEST(中央ヨーロッパ夏時間)

に失敗します

 dateFormats[0] = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); 
     dateFormats[1] = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy"); 
     dateFormats[2] = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZZ yyyy"); 
     dateFormats[3] = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy"); 

も文字列をトリムしようとしましたが、それは助けになりませんでした。

SDFには、2番目のパラメータがロケールである通常のJDKとしてのコンストラクタがありません。

答えて

1
// Method that take date time string , input pattern and out put pattern,that return formatted date as string 

public String parseDate(String dateTime,String inputPattern, String outputPattern) throws ParseException { 

    SimpleDateFormat inputFormat = new SimpleDateFormat(inputPattern, Locale.ENGLISH); 
    SimpleDateFormat outputFormat = new SimpleDateFormat(outputPattern); 

    Date date = inputFormat.parse(dateTime); 
    String str = outputFormat.format(date); 

    return str; 
} 
// call method 
String date = parseDate("Thu Mar 31 00:00:00 CEST 2016" ,"EEE MMM dd HH:mm:ss zzz yyyy", "MM-dd-yyyy:HH:mm:ss"); 

// print date 
System.out.println(date); 

// Result 
03-31-2016:03:00:00 
+0

これは例外では私のため結果: com.codename1.l10n.ParseException:無効なタイムゾーン値 と com.codename1。 l10n.ParseException:。、私のアプローチは、このメソッドを使用していた私は、残念ながら何のDateTimeクラスが存在しない – kaya

+0

を実装されていません:Calendar.getInstance()はgetTimeZone()が、SimpleDateFormatのクラスが欠けていますsetTimeZoneメソッド。 もう一度、SimpleDateFormatExtというshannahのクラスがありますが、このケースではどちらも役に立ちませんでした。 編集:Khalid、CodenameOneがそのコンストラクタを実装していないため動作しません –

+0

方法、追加のタイムゾーン「Locale.ENGLISH」を更新しました – kaya

0

私は今この問題に回避策をした、私はまだ、さらに私のAPIやものを開発することができますが、私はそれが後のタイムゾーンを持ついくつかの問題を作成すると思うよう私は、この修正プログラムを好まない正直に言うと。

タイムゾーンと夏/冬の時間にエラーが発生する可能性がある場合は、経験豊かな人にこの修正について何か教えてください。

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy"); 
String dateValue = plannedDate; 
String year = dateValue.substring(dateValue.length() - 4); 
dateValue = dateValue.substring(0, 20); 
dateValue += year; 
this.plannedDate = sdf.parse(dateValue); 

何かアドバイスや可能な修正歓迎されている(Y)

関連する問題