달력 날짜를 yyyy-MM-dd
형식 으로 변환하는 방법
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
String date1 = format1.format(date);
Date inActiveDate = null;
try {
inActiveDate = format1.parse(date1);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
이 생산 inActiveDate = Wed Sep 26 00:00:00 IST 2012
합니다. 그러나 내가 필요한 것은 2012-09-26
입니다. 내 목적은이 날짜를 최대 절전 모드 기준을 사용하여 데이터베이스의 다른 날짜와 비교하는 것입니다. 그래서 날짜 yyyy-MM-dd
형식의 형식이 필요 합니다.
답변
Java Date
는 1970 년 1 월 1 일 00:00:00 GMT 이후 밀리 초 단위의 컨테이너입니다.
와 같은 것을 사용할 때 System.out.println(date)
Java는 Date.toString()
내용을 인쇄하는 데 사용 합니다.
이를 변경하는 유일한 방법은 Date
의 구현 을 재정의 하고 제공하는 것입니다 Date.toString()
. 이제 IDE를 시작하고 시도하기 전에 나는하지 않을 것입니다. 문제 만 복잡하게 할뿐입니다. 날짜를 사용하거나 표시하려는 형식으로 지정하는 것이 좋습니다.
자바 8+
LocalDateTime ldt = LocalDateTime.now().plusDays(1);
DateTimeFormatter formmat1 = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH);
System.out.println(ldt);
// Output "2018-05-12T17:21:53.658"
String formatter = formmat1.format(ldt);
System.out.println(formatter);
// 2018-05-12
Java 8 이전
당신은 사용하게해야한다 ThreeTen 백 포트를
다음은 역사적 목적을 위해 유지됩니다 (원래 답변으로)
당신이 할 수있는 일은 날짜 형식입니다.
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(cal.getTime());
// Output "Wed Sep 26 14:23:28 EST 2012"
String formatted = format1.format(cal.getTime());
System.out.println(formatted);
// Output "2012-09-26"
System.out.println(format1.parse(formatted));
// Output "Wed Sep 26 00:00:00 EST 2012"
이들은 실제로 동일한 날짜이며 다르게 표시됩니다.
답변
코드가 잘못되었습니다. 구문 분석 날짜가 없으며 Date 객체로 유지하십시오.
캘린더 날짜 객체를 표시하고 문자열로 유지하려는 경우 캘린더 날짜 객체의 형식을 지정할 수 있습니다.
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
String inActiveDate = null;
try {
inActiveDate = format1.format(date);
System.out.println(inActiveDate );
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
답변
java.time
MadProgrammer 의 답변 , 특히 Joda-Time 에 대한 팁이 정확합니다 . Joda-Time의 후속 버전은 이제 새로운 java.time 패키지 로 Java 8에 내장되어 있습니다. 다음은 Java 8의 코드 예제입니다.
현지 날짜와 달리 날짜 시간으로 작업 할 때는 시간대 가 중요합니다. 월은 시간대에 따라 다릅니다. 예를 들어, 인도 시간대 는 +05:30
(UTC보다 5 시간 30 분 앞선 반면) 프랑스 는 1 시간 앞서 있습니다. 따라서 인도의 새로운 하루의 순간에는 데이트가 있고 프랑스의 같은 순간에는 “어제의 날짜”가 있습니다. 시간대 나 오프셋 정보가없는 문자열 출력을 작성하면 모호성이 발생합니다. YYYY-MM-DD 출력을 요청하여 제공했지만 권장하지 않습니다. 대신 이 출력을 얻는 ISO_LOCAL_DATE
데 사용했을 것입니다 ISO_DATE
.2014-02-25+05:30
ZoneId zoneId = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zonedDateTime = ZonedDateTime.now( zoneId );
DateTimeFormatter formatterOutput = DateTimeFormatter.ISO_LOCAL_DATE; // Caution: The "LOCAL" part means we are losing time zone information, creating ambiguity.
String output = formatterOutput.format( zonedDateTime );
콘솔로 덤프…
System.out.println( "zonedDateTime: " + zonedDateTime );
System.out.println( "output: " + output );
달릴 때…
zonedDateTime: 2014-02-25T14:22:20.919+05:30[Asia/Kolkata]
output: 2014-02-25
조다 타임
java.time의 선구자 인 Joda-Time 라이브러리를 사용하는 유사한 코드 .
DateTimeZone zone = new DateTimeZone( "Asia/Kolkata" );
DateTime dateTime = DateTime.now( zone );
DateTimeFormatter formatter = ISODateTimeFormat.date();
String output = formatter.print( dateTime );
ISO 8601
그건 그렇고, 입력 문자열의 형식은 ISO 8601에 의해 정의 된 몇 가지 편리한 날짜-시간 문자열 형식 중 하나 인 표준 형식 입니다.
Joda-Time 및 java.time은 다양한 날짜-시간 값의 문자열 표현을 구문 분석하고 생성 할 때 기본적으로 ISO 8601 형식을 사용합니다.
답변
java.util.Date
객체는 날짜 를 사용자 정의 형식으로 나타낼 수 없으며 대신 SimpleDateFormat.format
을 반환 하는 메소드 를 사용해야 합니다 string
.
String myString=format1.format(date);
답변
java.util.Date
객체 를 파싱하려면 먼저 자신의 형식을 사용하여 객체를 문자열로 변환해야합니다.
inActiveDate = format1.parse( format1.format(date) );
그러나 나는 당신이 여기서 중복되고 있다고 생각합니다.
답변
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 7);
Date date = c.getTime();
SimpleDateFormat ft = new SimpleDateFormat("MM-dd-YYYY");
JOptionPane.showMessageDialog(null, ft.format(date));
JOption 창에 날짜 + 월, 일 및 연도 형식으로 7 일이 표시됩니다.
답변
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.set(year, month, date);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy MM dd");
String formatted = format1.format(cal.getTime());
System.out.println(formatted);
}