Java Timestamp - 2007/09/23 날짜의 타임스탬프를 작성하려면 어떻게 해야 합니까?
2007년 9월 23일의 타임스탬프를 작성하려면 어떻게 해야 합니까?
타고Timestamp그렇겠지.이 클래스에는 다음 명령어를 수신하는 생성자가 있습니다.long논쟁.이것은, 를 사용해 주세요.DateFormat클래스:
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("23/09/2007");
long time = date.getTime();
new Timestamp(time);
이건 어때?
java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf("2007-09-23 10:10:10.0");
타임스탬프라니요?Unix epoch 이후의 밀리초를 의미하는 경우:
GregorianCalendar cal = new GregorianCalendar(2007, 9 - 1, 23);
long millis = cal.getTimeInMillis();
실제 java.sql을 원하는 경우.타임스탬프 오브젝트:
Timestamp ts = new Timestamp(millis);
dr;dr
java.sql.Timestamp.from (
LocalDate.of ( 2007 , 9 , 23 )
.atStartOfDay( ZoneId.of ( "America/Montreal" ) )
.toInstant()
)
java.time
Java 8 이후에 내장된 java.time 프레임워크를 사용한 코드를 표시하여 이 페이지를 업데이트해 보겠습니다.
이러한 새로운 클래스는 JSR 310에서 정의된 Joda-Time에서 영감을 받아 ThreeTen-Extra 프로젝트에서 확장되었습니다.이들은 Java의 초기 버전과 함께 번들된 성가신 오래된 날짜-시간 클래스를 대체한다.
java.time에서는Instant는 UTC 시간대의 순간입니다.aZonedDateTime는 시간대로 조정된 Instant입니다(ZoneId).
여기서 시간대는 매우 중요합니다.의 날짜September 23, 2007타임존을 적용하지 않으면 타임라인상의 순간으로 변환할 수 없습니다.아직 '어제'인 몽트렐보다 파리에서 새로운 날이 일찍 밝는 것을 고려하라.
또한 java.sql.타임스탬프는 날짜와 시간을 모두 나타냅니다.그래서 날짜를 따르려면 하루 중 시간을 삽입해야 합니다.하루 중 첫 번째 순간을 시각으로 원하는 것으로 가정합니다.이 시기가 항상 적절한 것은 아니라는 점에 주의해 주십시오.00:00:00.0서머타임이나 기타 이상현상이 원인일 수 있습니다.
이전 java.util과는 다릅니다.날짜 클래스로 Joda-Time과는 달리 java.time 타입의 분해능은 밀리초가 아니라 나노초입니다.이는 java.sql의 해상도와 일치합니다.타임스탬프
java.sql에 주의해 주세요.타임 스탬프에는, 다음의 방법으로 문자열 표현을 생성할 때에, JVM 의 현재의 디폴트 타임 존을 그 날짜 값에 암묵적으로 적용하는 불쾌한 습관이 있습니다.toString방법.여기 제 사진이 있습니다.America/Los_Angeles적용되고 있습니다.이와는 대조적으로 java.time 클래스는 표준 ISO 8601 형식을 사용하는 것이 더 적절합니다.
LocalDate d = LocalDate.of ( 2007 , 9 , 23 ) ;
ZoneId z = ZoneId.of ( "America/Montreal" ) ;
ZonedDateTime zdt = d.atStartOfDay( z ) ;
Instant instant = zdt.toInstant() ;
java.sql.Timestamp ts = java.sql.Timestamp.from ( instant ) ;
콘솔에 덤프합니다.
System.out.println ( "d: " + d + " = zdt: " + zdt + " = instant: " + instant + " = ts: " + ts );
달릴 때.
d: 2007-09-23 = zdt: 2007-09-23T00:00~04:00[미국/몬트리알] = 인스턴트: 2007-09-23T04:00:00Z = ts: 2007-09-22 21:00:00.0
덧붙여서 JDBC 4.2부터는 java.time 타입을 직접 사용할 수 있습니다.필요 없다java.sql.Timestamp
PreparedStatement.setObjectResultSet.getObject
java.time 정보
java.time 프레임워크는 Java 8 이후에 포함되어 있습니다.이러한 클래스는 , 및 등 문제가 많은 오래된 레거시 날짜 시간 클래스를 대체합니다.
현재 유지보수 모드에 있는 조다 타임 프로젝트는 java.time 클래스로의 이행을 권장합니다.
자세한 내용은 Oracle 자습서를 참조하십시오.또한 Stack Overflow를 검색하여 많은 예와 설명을 확인하십시오.사양은 JSR 310입니다.
java.time 객체를 데이터베이스와 직접 교환할 수 있습니다.JDBC 4.2 이후에 준거한JDBC 드라이버를 사용합니다.스트링도 필요 없고java.sql.*②.
java.time 클래스는 어디서 얻을 수 있습니까?
- Java SE 8, Java SE 9, Java SE 10, Java SE 11 및 이후 - 표준 Java API의 일부이며 번들 구현이 포함되어 있습니다.
- Java 9에는 몇 가지 사소한 기능과 수정 사항이 추가되어 있습니다.
- Java SE 6 및 Java SE 7
- java.time 기능의 대부분은 ThreeTen 백포트의 Java 6 및7로 백포트됩니다.
- 안드로이드
- 최신 버전의 Android 번들 구현 java.time 클래스.
- 이전의 Android(<26)에서는 쓰리텐ABP 프로젝트가 ThreeTen-Backport(상기)를 채택하고 있습니다.'쓰리텐ABP 사용방법'을 참조하십시오.
쓰리텐 엑스트라 프로젝트는 java.time을 추가 클래스로 확장합니다.이 프로젝트는 향후 java.time에 추가될 수 있는 가능성을 입증하는 기반입니다.여기에는 , , , 등 유용한 클래스가 있습니다.
다음 작업도 수행할 수 있습니다.
// untested
Calendar cal = GregorianCalendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 23);// I might have the wrong Calendar constant...
cal.set(Calendar.MONTH, 8);// -1 as month is zero-based
cal.set(Calendar.YEAR, 2009);
Timestamp tstamp = new Timestamp(cal.getTimeInMillis());
API에 따르면 연도, 월 등을 허용하는 생성자는 사용되지 않습니다.대신 long을 사용할 수 있는 생성자를 사용해야 합니다.달력 구현을 사용하여 원하는 날짜를 구성하고 getTimeInMillis 메서드를 사용하여 시간 표현에 길게 액세스할 수 있습니다.
Joda-Time 버전 2.5와 그 클래스의 솔루션도 완전성을 위해 다음과 같습니다.
new Timestamp(new DateTime(2007, 9, 23, 0, 0, DateTimeZone.forID( "America/Montreal" )).getMillis())
좀 더 은 '하다, 수입하다'입니다.java.util.Date를 timestamp.new Date().
언급URL : https://stackoverflow.com/questions/974973/java-timestamp-how-can-i-create-a-timestamp-with-the-date-23-09-2007
'source' 카테고리의 다른 글
| MySQL에서 쿼리 실행을 중지, 중단 또는 중단하려면 어떻게 해야 합니까? (0) | 2022.11.24 |
|---|---|
| JavaScript를 사용하여 어레이를 삽입하시겠습니까? (0) | 2022.11.24 |
| Swisscom Cloud 내의 mariadb의 기본 서버 문자는 무엇이며 어떻게 변경할 수 있습니까? (0) | 2022.11.24 |
| ES6 모듈에서 여러 클래스 내보내기 (0) | 2022.11.24 |
| 여러 개의 새 기둥을 만들기 위해 기둥에 판다 기능을 적용하시겠습니까? (0) | 2022.11.24 |