날짜를 해석하는 방법?
이 날짜를 해석하려고 합니다.SimpleDateFormat동작하지 않습니다.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Formaterclass {
public static void main(String[] args) throws ParseException{
String strDate = "Thu Jun 18 20:56:02 EDT 2009";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date dateStr = formatter.parse(strDate);
String formattedDate = formatter.format(dateStr);
System.out.println("yyyy-MM-dd date is ==>"+formattedDate);
Date date1 = formatter.parse(formattedDate);
formatter = new SimpleDateFormat("dd-MMM-yyyy");
formattedDate = formatter.format(date1);
System.out.println("dd-MMM-yyyy date is ==>"+formattedDate);
}
}
strDate=로 이 코드를 시도하면"2008-10-14"나는 긍정적인 답을 가지고 있다.문제가 뭐죠?이 형식을 해석하려면 어떻게 해야 하나요?
추신. 저는 이 날짜를jDatePicker사용자가 날짜를 선택할 때 표시되는 날짜 형식을 변경하는 방법에 대한 지침은 없습니다.
다른 형식으로 설정된 SimpleDateFormat으로 날짜를 구문 분석할 수 없습니다.
"Thu Jun 18 20:56:02 EDT 2009" 날짜 문자열을 해석하려면 다음과 같은 SimpleDateFormat(대략)이 필요합니다.
SimpleDateFormat parser=new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
이를 통해 문자열을 날짜로 해석하고 다른 SimpleDateFormat을 사용하여 해당 날짜를 원하는 형식으로 변환합니다.
String input = "Thu Jun 18 20:56:02 EDT 2009";
SimpleDateFormat parser = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
Date date = parser.parse(input);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(date);
...
JavaDoc: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
문제는 날짜 형식이 다음과 같다는 것입니다.
Thu Jun 18 20:56:02 EDT 2009
단, 를 사용하고 있다.SimpleDateFormat즉, 다음과 같습니다.
yyyy-MM-dd
두 형식이 일치하지 않습니다.해석하려는 문자열의 레이아웃과 일치하는를 날짜로 구성해야 합니다.보기 쉽게 일렬로 정렬하면SimpleDateFormat다음과 같습니다.
EEE MMM dd HH:mm:ss zzz yyyy
Thu Jun 18 20:56:02 EDT 2009
내가 링크한 JavaDoc 페이지를 확인하고 문자가 어떻게 사용되는지 확인합니다.
우리는 이제 이 일을 보다 현대적인 방법으로 할 수 있게 되었다.
java.time
java.time 프레임워크는 Java 8 이후에 번들되어 있습니다.튜토리얼을 참조해 주세요.이러한 새로운 클래스는 JSR 310에서 정의된 Joda-Time에서 영감을 받아 ThreeTen-Extra 프로젝트에서 확장되었습니다.번거로운 오래된 클래스인 java.util에 비해 크게 개선되었습니다.날짜/. 캘린더 등
3-4 문자 코드는 다음과 같습니다.EDT표준화되지도 않고 독특하지도 않습니다.가능하면 피하세요.대신 ISO 8601 표준 형식을 사용하는 방법을 배우십시오.java.time 프레임워크는 변환을 시도할 수 있지만 일반적으로 사용되는 코드의 대부분은 중복된 값을 가집니다.
덧붙여서, java.time은 기본적으로 ISO 8601 형식을 사용하여 문자열을 생성하지만, 괄호 안에 시간대 이름을 추가하여 확장됩니다.
String input = "Thu Jun 18 20:56:02 EDT 2009";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "EEE MMM d HH:mm:ss zzz yyyy" , Locale.ENGLISH );
ZonedDateTime zdt = formatter.parse ( input , ZonedDateTime :: from );
콘솔에 덤프합니다.
System.out.println ( "zdt : " + zdt );
달릴 때.
zdt : 2009-06-18T20:56:02-04:00[미국/뉴욕]
시간대 조정
재미삼아 인도 시간대에 맞추자.
ZonedDateTime zdtKolkata = zdt.withZoneSameInstant ( ZoneId.of ( "Asia/Kolkata" ) );
zdtKolkata : 2009-06-19T06:26:02+05:30[아시아/콜카타]
j.u로 변환합니다.날짜.
java.util이 정말 필요한 경우.클래스에서 사용할 날짜 개체는 아직 java.time 유형으로 업데이트되지 않았습니다. 변환하십시오.할당된 시간대가 손실되지만 UTC로 자동으로 조정되는 동일한 시간이 있음을 유의하십시오.
java.util.Date date = java.util.Date.from( zdt.toInstant() );
Get Selected Date는 어떻습니까?어쨌든, 특히 코드 질문에 대해서는, 다음의 행에 문제가 있습니다.
new SimpleDateFormat("yyyy-MM-dd");
생성자에 들어가는 문자열은 날짜 형식과 일치해야 합니다.그 방법에 대한 설명서는 여기에 있습니다."EEE MM d HH:mm:ss zzz yyy"에 가까운 것이 필요한 것 같습니다.
"2016년 9월 13일 화요일 00:00:00 GMT-0500(Hora de verano central(México))을 자바에서 dd-MM-yy로 변환하는 방법"에 대한 답변에는 중복이 표시되었습니다.
이것을 시험해 보세요.와 함께java.util.Date,java.text.SimpleDateFormat간단한 해결책입니다.
public static void main(String[] args) throws ParseException {
String fecha = "Tue Sep 13 2016 00:00:00 GMT-0500 (Hora de verano central (México))";
Date f = new Date(fecha);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setTimeZone(TimeZone.getTimeZone("-5GMT"));
fecha = sdf.format(f);
System.out.println(fecha);
}
언급URL : https://stackoverflow.com/questions/999172/how-to-parse-a-date
'programing' 카테고리의 다른 글
| OSGi는 무엇을 해결합니까? (0) | 2022.07.18 |
|---|---|
| String Builder를 지우거나 비우려면 어떻게 해야 합니까? (0) | 2022.07.18 |
| vue-disable을 사용하지 않도록 설정할 수 없음 (0) | 2022.07.18 |
| VueJS 구문: 마운트에서 실행 중인 메서드 (0) | 2022.07.18 |
| Java에서 명령줄 인수를 해석하려면 어떻게 해야 합니까? (0) | 2022.07.18 |