한 구역에서 시간을 얻으려고하면 IST 또는 다른 모든 시간대가 GMT TIME 구역 문자열로 변환됩니다. 그러나 GMT 기반 문자열 시간에서 타임 스탬프를 얻으려고하면 로컬 타임 스탬프 값을 얻습니다. 왜 그렇게 특별한 이유가 있습니다.GMT/CST 기반 문자열을 Java의 Timestamp로 변환
-2
A
답변
0
"이유가 무엇입니까?" 예, Java에서는 기본적으로 JVM이 실행중인 로컬 시간대에서 날짜 값을 "인쇄"(렌더링)한다고 가정하기 때문입니다.
@Before
public void setup() {
sdf = new SimpleDateFormat(Hello.TS_FORMAT);// TS_FORMAT = "yyyyMMdd'T'HHmmssXX";
Calendar cal = sdf.getCalendar();
cal.setTimeZone(TimeZone.getTimeZone(UTC_TIME_ZONE));// UTC_TIME_ZONE = "GMT";
sdf.setCalendar(cal);
...
}
@Test
public void testTimestampFormat03() {
String inboundTimestampText = '20170322T170805-0700';// means inbound is in Pacific Time Zone (17:08:05 on 03/22)
Date dt = sdf.parse(inboundTimestampText);
String defaultFormat = dt.toString();// default locale is Central Time Zone (19:08:05 on 03/22)
String actualFormat = sdf.format(dt);
String expectedFormat = inboundTimestampText.replace('T17', 'T00');
expectedFormat = expectedFormat.replace('0322', '0323');// expected Time Zone is UTC (00:08:05 on 03/23)
expectedFormat = expectedFormat.replace('-', 'Z');
assertEquals(expectedFormat, actualFormat + '0700');
}
당신은 당신이 날짜 값에 "렌더링"원하는 시간대를 지정해야합니다. 기본적으로, 당신은 당신이 날짜 문자열에서 읽는 데 사용되는 날짜 formatter.format(aDate)
를 인쇄하려면 "동일한"포맷을 사용할 필요가 formatter.parse(aDtaeString)
.
0
웹에서 발견.
Calendar calendar = Calendar.getInstance();
TimeZone fromTimeZone = calendar.getTimeZone();
TimeZone toTimeZone = TimeZone.getTimeZone("CST");
calendar.setTimeZone(fromTimeZone);
calendar.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1);
if (fromTimeZone.inDaylightTime(calendar.getTime())) {
calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1);
}
calendar.add(Calendar.MILLISECOND, toTimeZone.getRawOffset());
if (toTimeZone.inDaylightTime(calendar.getTime())) {
calendar.add(Calendar.MILLISECOND, toTimeZone.getDSTSavings());
}
System.out.println(calendar.getTime());
관련 문제
- 1. 이 문자열을 Timestamp로 변환하는 방법
- 2. UTC에서 Unix Timestamp로 변환
- 3. MySQL datetime을 timestamp로 변환
- 4. DateTime에서 TimeStamp로 변환
- 5. 문자열을 Java의 비트 벡터로 변환
- 6. datetime 배열을 timestamp로 변환 Python
- 7. 배열 형 문자열을 Java의 ArrayList로 변환
- 8. 문자열을 Java의 구성 요소 이름으로 변환
- 9. 16 진수 문자열을 Java의 바이트로 변환
- 10. 목록의 문자열을 java의 문자열 목록으로 변환
- 11. 문자열을 Sybase의 datetime/timestamp로 변환하는 방법
- 12. 어떻게 Android Date를 Linux TimeStamp로 변환 하시겠습니까?
- 13. json timestamp를 nornal java timestamp로 변환
- 14. Java의 스크래치 기반 이동
- 15. Java TimeStamp로 [email protected]를 변환하십시오.
- 16. datetime을 timestamp로 변환하는 방법
- 17. Java의 도메인 기반 디자인 - 모든 프리미티브를 값 객체로 변환 하시겠습니까?
- 18. JSON 문자열을 Java의 HashMap으로 변환하십시오.
- 19. Java에서 문자열을 Integer로 변환
- 20. Java의 공백을 포함한 문자열을 인쇄합니다.
- 21. 문자열을 java의 "\"문자로 바꿉니다.
- 22. now()를 timestamp로 변환하는 방법
- 23. Unix epoch에서 timestamp로 변환하는 방법
- 24. .csv를 Java의 .xls로 변환
- 25. java의 DateTime 변환
- 26. InputStream을 Java의 FileItem으로 변환
- 27. Java의 일 변환 수
- 28. Java의 기하학적 변환 시퀀스
- 29. json을 java의 문자열로 변환
- 30. 스프링 MVC 폼 bean에서 문자열을 자동으로 TimeStamp로 변환하는 방법
여기에 코드 게시 –