아래 코드는 날짜 형식을 "yyyy-MM-dd'T'HH:mm:ss"
에서 "MM/dd/yyyy"
으로 변환합니다.Joda 시간을 사용하여 날짜 형식을 변환 할 때 여러 날짜 형식을 제공합니다.
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class TestDate {
public static void main(String[] args) {
DateTimeFormatter parser = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
DateTime dateTime = parser.parseDateTime("2014-05-19T23:59:59");
DateTimeFormatter formatter = DateTimeFormat.forPattern("MM/dd/yyyy");
System.out.println(formatter.print(dateTime)+"\n");
dateTime = parser.parseDateTime("2014-06-09T03:00:23.67");
formatter = DateTimeFormat.forPattern("MM/dd/yyyy");
System.out.println(formatter.print(dateTime));
}
예외가 "2014-06-09T03:00:23.67"
위해 발생합니다 :
2014-05-27T03:00:32.613
나는 단지의 "MM/dd/yyyy"
부분이 필요합니다
Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "2014-06-09T03:00:23.67" is malformed at ".67"
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:899)
at TestDate.main(TestDate.java:16)
가 나는 또한 같은 다른 가능성을 수용 할 수 있어야합니다 날짜 이후에는 그 이후의 모든 것을 무시할 수 있습니다. Using Joda Date & Time API to parse multiple formats
또는 특정 패턴 이후의 모든 것을 무시하는 와일드 카드를 사용할 수 있습니까? 뭔가 같은 :
DateTimeFormatter parser = DateTimeFormat.forPattern("yyyy-MM-dd%");
또는이 부정 보이지만 난, 그냥 'T'전에 나타나는 값을 사용하여 날짜 시간의 'T'섹션에서 문자열 및 분할을 구문 분석 할 수 있습니다 ....
다른 방법이 있습니까?
업데이트 : 시간, 사용하는 대신 필요하지 않기 때문에
는 :
String strDate = "2014-05-19T23:59:59";
DateTime dateTime = parser.parseDateTime(strDate);
사용됩니다 단지 문자열의 2014-05-19
부분을 구문 분석
String strDate = "2014-05-19T23:59:59";
DateTime dateTime = parser.parseDateTime(strDate.substring(0, 10));
,이 음식을 장만한다 여러 시간 형식.
당신은 Joda [ISODateTimeFormat] (http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html)을 체크 아웃 적이 있습니까? – OldCurmudgeon
@OldCurmudgeon ISODateTimeFormat은 여러 날짜 형식을 허용하지 않거나 여러 형식을 기반으로 날짜 형식을 지정할 수 있습니까? –
가능한 중복 ... http://stackoverflow.com/questions/4153602/how-to-force-joda-time-to-parse-only-part-of-string – jalopaba