2016-10-07 20 views
0

と日付にてGregorianCalendarを含めるには、どのように私はJavaで日付を入力するには、このString文字列を解析partern

java.util.GregorianCalendar[time=1461732800330,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=3,WEEK_OF_YEAR=18,WEEK_OF_MONTH=5,DAY_OF_MONTH=27,DAY_OF_YEAR=118,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=53,SECOND=20,MILLISECOND=330,ZONE_OFFSET=32400000,DST_OFFSET=0] 

を解析することができます。 私の問題はそれが文字列であり、解析する方法がわかりません。

+1

から取られているの解析:Googleのグアバは、依存関係として宣言されると仮定すると

。そのStringは、呼び出される 'GregorianCalendar'オブジェクトメソッド' toString'によって生成されました。その出力はデバッグのためのもので、**データ交換のためのものではありません**。ソースに戻り、そのオブジェクトに移動し、必要な情報を抽出します。そのオリジナルのオブジェクトに、標準のISO 8601形式などの分かりやすい文字列を送信するよう依頼します。別のヒント:ひどいDateクラスとCalendarクラスの代わりにjava.timeクラスを使用してください。 –

答えて

1

Stringは、質問に示されているように、GregorianCalendarオブジェクトからのtoString()の出力であることを考慮すると、Dateオブジェクトの構築に必要なすべての情報が含まれています。

import com.google.common.base.Splitter; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Map; 

/** 
* Converts the string provided to a Date object 
* @param input String output of toString() from a GregorianCalendar object 
* @return Date object 
* @throws ParseException When the values received are invalid 
*/ 
public Date convertGregorianCalendarStringOutputToDate(final String input) throws ParseException { 

    // Parses the string received with a format of tuples key=value, separated by commas 
    String formatted = input.replaceAll("\\]|\\/|\"",""); 
    formatted = formatted.replaceFirst("\\[", ""); 
    formatted = formatted.replaceAll("\\[", ","); 

    // Creates a map of the key-values parsed 
    Map<String, String> params = Splitter 
       .on(",") 
       .withKeyValueSeparator("=") 
       .split(formatted); 

    StringBuffer stringDate = new StringBuffer(params.get("YEAR")); 
    stringDate.append("-") 
      .append(params.get("MONTH")) 
      .append("-") 
      .append(params.get("DAY_OF_MONTH")) 
      .append(" ") 
      .append(params.get("HOUR_OF_DAY")) 
      .append(":") 
      .append(params.get("MINUTE")) 
      .append(":") 
      .append(params.get("SECOND")); 

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd hh:mm:ss"); 
    return(sdf.parse(stringDate.toString())); 
} 

キーと値のペアは、これはかなり愚かな状況ですhere

+0

申し訳ありませんが、GregorianCalendarオブジェクトではなく、文字列をGregorianCalendarオブジェクトにキャストできます。 –

+0

説明のおかげで、このメソッドは「Date」オブジェクトを解析します。 –