канвертаваць XMLGregorianCalendar абнаўляецца "г.зн. MM/DD/YYYY гг: мм: сс AM"

У мяне ёсць дату ў фармаце XMLGregorianCalendar як «2013-05-16T09: 54: 13», які я павінен пераўтвараць адзнаку часу «MM/DD/YYYY гг: мм: сс AM» для ўстаўкі ў табліцу базы дадзеных Oracle з дапамогай Java.

як я магу гэта зрабіць у Java?

Загадзя дзякую ...

18
Вы не фармат пазнакі часу, перш чым ўставіць у БД. Вы можаце выкарыстоўваць клас java.util.Date.
дададзена аўтар Danubian Sailor, крыніца
дададзена аўтар AurA, крыніца

8 адказы

Вы можаце зрабіць гэта, каб вярнуць Дата :

calendar.toGregorianCalendar().getTime()

Я выявіў, што код з гэтага ўроку . Адтуль вы можаце выкарыстоўваць SimpleDateFormat , ператварыць яго ў радок у фармаце, які вы хочаце.

Але, калі вы карыстаецеся JDBC, каб захаваць дату ў базе дадзеных, вы, верагодна, можа перайсці ў Дата непасрэдна гэты метад :

preparedStatement.setDate(colNum, myDate);
34
дададзена
@ilinca метад GetTime() належыць да класа GregorianCalendar. Вам трэба разабраць XMLGregorianCalendar для GregorianCalendar з выкарыстаннем метаду .toGregorianCalendar (), як паказана вышэй.
дададзена аўтар Mathter, крыніца
Я не магу бачыць, метад GetTime (). Вы кажаце пра іншае пакеце, чым дакументы. oracle.com/javase/7/docs/api/javax/xml/datatype/… ?
дададзена аўтар ilinca, крыніца

Вось больш ясны адказ:

Атрымаць асобнік Дата ад асобніка XMLGregorianCalendar:

Date date = xmlCalendar.toGregorianCalendar().getTime();

I found that code from Convert XMLGregorianCalendar to Date in Java

Фармат гэтай даты асобнік з фарматам "ММ/дд/гггг гг: мм: сс а", вы атрымаеце MM/DD/YYYY гг: сс AM: мм

DateFormat  formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");
String formattedDate  = formatter.format(date)

From Convert Date to String in Java

Для ўстаўкі базы дадзеных вы маглі б зрабіць тое, што прапанаваў Даніэль

5
дададзена

Калі вы хочаце, каб ўставіць дату ў базе дадзеных я б першым зрабіць тое, што прапанаваў Даніэль:

XMLGregorianCalendar xgc=;
Date timestamp=xgc.toGregorianCalendar().getTime();

а затым устаўце яго праз PreparedStatement як Timestamp ў мілісекундах (час Epoch). Такім чынам, вы не страціце дакладнасць.

preparedStatement.setTimestamp(colNum,new Timestamp(timestamp.getTime()));
3
дададзена

ТЛ; інш

myPreparedStatement.setObject( 
    … , 
    myXGC.toGregorianCalendar()
         .toZonedDateTime()
) ;

java.time

Сучасны падыход выкарыстоўвае класы java.time, якія выцяснялі праблемныя старыя класы Дата , Каляндар і GregorianCalendar .

Пераўтварэнне з атрыманых у спадчыну класаў java.time.

GregorianCalendar gc = myXGC.toGregorianCalendar() ;
ZonedDateTime zdt = gc.toZonedDateTime();

Перадача значэнняў даты і часу ў базе дадзеных <�моцны> у якасці даты і часу аб'екты, а не як радкі .

Калі драйвер JDBC адпавядае JDBC 4.2 і пазней, вы можаце мець справу непасрэдна з тыпамі java.time.

myPreparedStatement.setObject( … , zdt ) ;

Калі драйвер яшчэ не адпавядае, на кароткі час пераўтварыць да тыпу java.sql.

myPreparedStatement.setTimestamp( … , java.sql.Timestamp.from ( zdt.toInstant() ) ) ;
1
дададзена

Гэта вяртае java.util.Date:

java.util.Date tempDate = issueDate.toGregorianCalendar().getTime();
0
дададзена

Please use the function below - just pass the XMLGregorianCalendar instance and date format you want (format example: "DD MMMM yyyy" -> 01 January 2017)

public String parseDate(String format,XMLGregorianCalendar XMLdate){
    Date date = XMLdate.toGregorianCalendar().getTime();
    DateFormat  formatter = new SimpleDateFormat(format);
    String formattedDate  = formatter.format(date);
    return formattedDate;
}
0
дададзена

Вы можаце канвертаваць XMLGregorianCalendar ў java.util.Date аб'ект, выкарыстоўваючы гэтыя два радкі кода: -

Date date = xmlDate.toGregorianCalendar().getTime();
System.out.println("java.util.date :- " + date);

Для таго, каб пераўтварыць у java.slq.Date аб'екта, выкарыстоўвайце гэты код: -

long time = xmlDate.toGregorianCalendar().getTime().getTime();
java.sql.Date sqlDate = new java.sql.Date(time);

You can see complete example here

0
дададзена

Use the DateFormat class in Java. This should be helpful: http://docs.oracle.com/javase/6/docs/api/java/text/DateFormat.html

0
дададзена