Joda Time 라이브러리를 사용하여 날짜 문자열을 DateTime 객체로 변환
다음 형식의 문자열로 날짜가 있습니다 "04/02/2011 20:27:05"
. Joda-Time 라이브러리를 사용하고 있으며 DateTime
객체 로 변환하고 싶습니다 . 나는했다 :
DateTime dt = new DateTime("04/02/2011 20:27:05")
하지만 다음과 같은 오류가 발생합니다.
Invalid format: "04/02/2011 14:42:17" is malformed at "/02/2011 14:42:17"
위의 날짜를 DateTime
객체 로 변환하는 방법은 무엇입니까?
사용 DateTimeFormat
:
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime dt = formatter.parseDateTime(string);
나는 이것이 오래된 질문이라는 것을 알고 있지만 JodaTime 2.0부터 하나의 라이너 로이 작업을 수행 할 수 있다고 덧붙이고 싶습니다.
DateTime date = DateTime.parse("04/02/2011 20:27:05",
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"));
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss").parseDateTime("04/02/2011 20:27:05");
의견에서 나는 TimeZone을 추가하고 같은 답변을 선택했습니다.
String dateTime = "2015-07-18T13:32:56.971-0400";
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ")
.withLocale(Locale.ROOT)
.withChronology(ISOChronology.getInstanceUTC());
DateTime dt = formatter.parseDateTime(dateTime);
형식이 예상 ISO 형식이 아닙니다. 시도해야합니다
DateTimeFormatter format = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime time = format.parseDateTime("04/02/2011 20:27:05");
다음 과 같이 SimpleDateFormat 을 사용할 수도 있습니다 .DateTimeFormat
Date startDate = null;
Date endDate = null;
try {
if (validDateStart!= null) startDate = new SimpleDateFormat("MM/dd/yyyy HH:mm", Locale.ENGLISH).parse(validDateStart + " " + validDateStartTime);
if (validDateEnd!= null) endDate = new SimpleDateFormat("MM/dd/yyyy HH:mm", Locale.ENGLISH).parse(validDateEnd + " " + validDateEndTime);
} catch (ParseException e) {
e.printStackTrace();
}
사용중인 형식에 적합한 DateTimeFormatter 가 필요합니다 . 문서를 작성하는 방법에 대한 지침은 문서를 살펴보십시오.
팔목에서 나는 네가 필요한 것 같아 format = DateTimeFormat.forPattern("M/d/y H:m:s")
tl; dr
java.time.LocalDateTime.parse(
"04/02/2011 20:27:05" ,
DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm:ss" )
)
java.time
현대적인 접근 방식은 훌륭한 Joda-Time 프로젝트 를 대체하는 java.time 클래스를 사용합니다 .
LocalDateTime
입력에 시간대 또는 UTC로부터의 오프셋 표시가 없기 때문에 로 구문 분석 하십시오.
String input = "04/02/2011 20:27:05" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm:ss" ) ;
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
ldt.toString () : 2011-02-04T20 : 27 : 05
팁 : 가능 하면 날짜-시간 값을 여기에 표시된 형식이 아닌 텍스트로 교환 할 때 표준 ISO 8601 형식을 사용 하십시오. 편리하게 java.time 클래스는 문자열을 구문 분석 / 생성 할 때 표준 형식을 사용합니다.
java.time에 대하여
java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 - 시간의 수업을 java.util.Date
, Calendar
, SimpleDateFormat
.
Joda 타임 프로젝트는 지금에 유지 관리 모드 의로 마이그레이션을 조언 java.time의 클래스.
자세한 내용은 Oracle Tutorial을 참조하십시오 . 많은 예제와 설명을 보려면 스택 오버플로를 검색하십시오. 사양은 JSR 310 입니다.
java.time 클래스는 어디서 구할 수 있습니까?
- 자바 SE 8 , 자바 SE 9 , 나중에
- 내장.
- 번들로 구현 된 표준 Java API의 일부입니다.
- Java 9에는 몇 가지 사소한 기능과 수정 사항이 추가되었습니다.
- Java SE 6 및 Java SE 7
- 대부분의 java.time 기능은 ThreeTen-Backport의 Java 6 & 7로 백 포트됩니다 .
- 기계적 인조 인간
- ThreeTenABP의 프로젝트는 적응 ThreeTen - 백 포트 특히 안드로이드에 대한 (위에서 언급).
- ThreeTenABP 사용 방법…을 참조하십시오 .
ThreeTen - 추가 프로젝트 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 입증 된 근거입니다. 당신은 여기에 몇 가지 유용한 클래스와 같은 찾을 수 있습니다 Interval
, YearWeek
, YearQuarter
, 그리고 더 .
간단한 방법 :
public static DateTime transfStringToDateTime(String dateParam, Session session) throws NotesException {
DateTime dateRetour;
dateRetour = session.createDateTime(dateParam);
return dateRetour;
}
거기 두 가지 방법 이 될 수 달성은 .
DateTimeFormat
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss").parseDateTime("04/02/2011 20:27:05");
SimpleDateFormat
String dateValue = "04/02/2011 20:27:05";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); // 04/02/2011 20:27:05
Date date = sdf.parse(dateValue); // returns date object
System.out.println(date); // outputs: Fri Feb 04 20:27:05 IST 2011
'IT story' 카테고리의 다른 글
Ubuntu에서 특정 서비스가 실행 중인지 확인 (0) | 2020.04.12 |
---|---|
IEEE754 NaN 값에 대해 false를 반환하는 모든 비교의 이론적 근거는 무엇입니까? (0) | 2020.04.12 |
DbContext.Database.SqlQuery를 사용하는 방법 (0) | 2020.04.12 |
HttpClient 제공 업체가 없습니다. (0) | 2020.04.11 |
루트 URL을 하위 디렉토리로 리디렉션하기위한 .htaccess 재 작성 (0) | 2020.04.11 |