현재 날짜와 시간을 UTC 또는 자바 GMT로 받는 방법은?
새 항목을 만들 때Date
개체는 현재 시간으로 초기화되지만 로컬 표준 시간대에서 초기화된다.GMT에서 현재 날짜와 시간을 어떻게 받을 수 있을까?
tl;dr
Instant.now() // Capture the current moment in UTC.
해당 값을 나타내는 문자열 생성:
Instant.now().toString()
2016-09-13T23:30:52.123Z
세부 사항
Jon Sket의 정답이 말했듯이, Java.util.날짜 개체에 표준 시간대가† 없음.그러나 그것의 구현은 해당 날짜 시간 값의 String 표현을 생성할 때 JVM의 기본 시간대를 적용한다.순진한 프로그래머에게 혼란스러울 정도로, 날짜는 시간대를 가지고 있는 것처럼 보이지만 그렇지 않다.
그java.util.Date
j.u.Calendar
그리고java.text.SimpleDateFormat
자바와 함께 묶인 수업은 매우 번거롭기로 악명 높다.그들을 피하라.대신 다음과 같은 유능한 날짜/시간 라이브러리 중 하나를 사용하십시오.
Java.time (Java 8)
Java 8은 훌륭한 새로운 Java.time을 제공한다.* 기존 Java.util을 대체하기 위한 패키지.날짜/캘린더 클래스.
UTC/GMT에서 현재 시간을 얻는 것은 간단한 원라이너…
Instant instant = Instant.now();
이 클래스는 기본 구성 요소(java.time)로 UTC의 타임라인에서 나노초 분해능으로 순간을 나타낸다.
자바 8에서 현재 모멘트는 최대 밀리초 분해능으로 캡처된다.Java 9는 호스트 컴퓨터의 클럭 하드웨어의 기능에 따라 이 클래스의 전체 나노초까지 현재 순간을 캡처하는 새로운 구현을 제공한다.
너무 좋다.toString
메소드는 하나의 특정 ISO 8601 형식을 사용하여 해당 값의 String 표현을 생성한다.이 형식은 0, 3, 6 또는 9자리(밀리초, 마이크로초 또는 나노초)를 초 분수를 나타내는 데 필요한 값으로 출력한다.
보다 유연한 포맷 또는 기타 추가 기능을 원하는 경우 UTC 자체(ZoneOffset.UTC
상수)에 0의 오프셋-From-UTC를 적용하여 .
OffsetDateTime now = OffsetDateTime.now( ZoneOffset.UTC );
콘솔로 덤프...
System.out.println( "now.toString(): " + now );
실행 시…
now.toString(): 2014-01-21T23:42:03.522Z
java.time 정보
자바.시간 프레임워크는 Java 8 이상에 내장되어 있다.이러한 수업은 , , & 같은 골치 아픈 오래된 레거시 날짜-시간 수업을 대체한다.
자세한 내용은 Oracle 자습서를 참조하십시오.그리고 스택 오버플로를 검색하여 많은 예와 설명을 참조하십시오.사양은 JSR 310이다.
현재 유지보수 모드에 있는 조다 타임 프로젝트는 Java.time 클래스로의 마이그레이션을 권고한다.
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 기능은 스리텐 백포트에서 Java 6 & 7로 백포트된다.
- 안드로이드
- 이후 버전의 Android 번들 구현 Java.time 클래스.
- 이전의 Android (<26)의 경우, 스리텐ABP 프로젝트는 스리텐 백포트 (위에서 언급)를 채택한다.ThreeTenABP 사용 방법을 참조하십시오.
스리텐 엑스트라 프로젝트는 추가 클래스와 함께 java.time을 확장한다.이 프로젝트는 Java.time에 향후 추가될 가능성이 있는 입증의 장이다.당신은 여기서 , , , , 그리고 그 이상과 같은 몇 가지 유용한 수업들을 찾을 수 있을 것이다.
조다 타임
UPDATE: 현재 유지 보수 모드에 있는 Joda-Time 프로젝트는 Java.Time 클래스로 마이그레이션을 권장한다.
Joda-Time 제3자 오픈소스 무료 도서관을 이용하면 코드 한 줄에 현재의 날짜/시간을 얻을 수 있다.
Joda-Time은 새로운 Java.time에 영감을 주었다.* Java 8의 클래스, 그러나 아키텍처는 다르다.당신은 이전 버전의 자바에서 조다-시간을 사용할 수 있다.Joda-Time은 Java 8에서 계속 일하고 있으며, 적극적으로 유지되고 있다(2014년 기준).그러나 Joda-Time 팀은 Java.time으로의 이주를 권고한다.
System.out.println( "UTC/GMT date-time in ISO 8601 format: " + new org.joda.time.DateTime( org.joda.time.DateTimeZone.UTC ) );
자세한 예시 코드(Joda-Time 2.3)…
org.joda.time.DateTime now = new org.joda.time.DateTime(); // Default time zone.
org.joda.time.DateTime zulu = now.toDateTime( org.joda.time.DateTimeZone.UTC );
콘솔로 덤프...
System.out.println( "Local time in ISO 8601 format: " + now );
System.out.println( "Same moment in UTC (Zulu): " + zulu );
실행 시…
Local time in ISO 8601 format: 2014-01-21T15:34:29.933-08:00
Same moment in UTC (Zulu): 2014-01-21T23:34:29.933Z
표준 시간대 작업을 수행하는 코드 예제는 유사한 질문에 대한 내 답변을 참조하십시오.
시간대
항상 JVM의 현재 기본 표준 시간대(즉시 변경 가능!)에 암묵적으로 의존하지 말고 시간대를 명시할 것을 권한다.이런 의존이 데이트 작업에서 혼란과 벌레의 공통적인 원인인 것 같다.
전화할 때now()
배정할 예정/예상 시간대를 통과하다수업을 이용하다.
DateTimeZone zoneMontréal = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zoneMontréal );
그 클래스는 UTC 시간대를 위한 상수를 가지고 있다.
DateTime now = DateTime.now( DateTimeZone.UTC );
JVM의 현재 기본 표준 시간대를 진정으로 사용하려면 코드가 자체 문서화되도록 명시적 통화를 수행하십시오.
DateTimeZone zoneDefault = DateTimeZone.getDefault();
ISO 8601
ISO 8601 형식에 대해 읽어 보십시오.Java.time과 Joda-Time 모두 문자열 구문 분석과 생성 모두에 대해 이 표준의 합리적인 형식을 기본값으로 사용한다.
† 사실, java.util.날짜에는 시간대가 있어 소스코드의 레이어 아래 깊이 묻혀있어대부분의 실제적인 목적에서, 그 시간대는 무시된다.즉, 우리는 java.util이라고 부른다.날짜에는 시간대가 없다.게다가, 그 매몰된 시간대는 다테네 집에서 사용하는 시간대가 아니다.toString
메서드; 이 메서드는 JVM의 현재 기본 표준 시간대를 사용한다.더욱 더 혼란스러운 수업을 피하고 조다 타임과 자바 타임에 충실해야 할 이유.
java.util.Date
그것의 가치는 UTC와 관련하여 가장 일반적으로 생각되지만, 특정한 시간대를 가지고 있지 않다.왜 현지 시간으로 생각하시죠?
정확히 말하면: a 내의 값java.util.Date
한 유닉스 시대 이후 UTC19701일 1일 1시 30분에 .다른 시간대에서도 같은 시대를 설명할 수 있지만, 전통적인 설명은 UTC의 측면에 있다.수 古木(후루끼)의은 古木(후루끼)의 수치다.java.util.Date
지역 시간대와 관계없이, 전 세계적으로 특정 순간에 동일하다.
로컬 시간대를 사용하는 캘린더 인스턴스(instance)를 통해 표시하거나Date.toString()
지역 표준 시간대를 사용하거나SimpleDateFormat
기본적으로 로컬 표준 시간대를 사용하는 인스턴스.
이게 문제가 아니라면 샘플 코드를 좀 올려줘.
하지만, 나는 네가 어쨌든 훨씬 더 명확한 API를 제공하는 Joda-Time을 사용하는 것을 추천하고 싶다.
SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
//Local time zone
SimpleDateFormat dateFormatLocal = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
//Time in GMT
return dateFormatLocal.parse( dateFormatGmt.format(new Date()) );
이것은 확실히 UTC 시간을 반환한다: String and Date objects!
static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static Date getUTCdatetimeAsDate() {
// note: doesn't check for null
return stringDateToDate(getUTCdatetimeAsString());
}
public static String getUTCdatetimeAsString() {
final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
final String utcTime = sdf.format(new Date());
return utcTime;
}
public static Date stringDateToDate(String StrDate) {
Date dateToReturn = null;
SimpleDateFormat dateFormat = new SimpleDateFormat(DATEFORMAT);
try {
dateToReturn = (Date)dateFormat.parse(StrDate);
}
catch (ParseException e) {
e.printStackTrace();
}
return dateToReturn;
}
Calendar c = Calendar.getInstance();
System.out.println("current: "+c.getTime());
TimeZone z = c.getTimeZone();
int offset = z.getRawOffset();
if(z.inDaylightTime(new Date())){
offset = offset + z.getDSTSavings();
}
int offsetHrs = offset / 1000 / 60 / 60;
int offsetMins = offset / 1000 / 60 % 60;
System.out.println("offset: " + offsetHrs);
System.out.println("offset: " + offsetMins);
c.add(Calendar.HOUR_OF_DAY, (-offsetHrs));
c.add(Calendar.MINUTE, (-offsetMins));
System.out.println("GMT Time: "+c.getTime());
사실 시간은 아니지만, 대표성이 바뀔 수도 있어.
SimpleDateFormat f = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
f.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(f.format(new Date()));
시간은 지구의 어느 지점에서도 마찬가지지만, 우리의 시간에 대한 인식은 위치에 따라 달라질 수 있다.
캘린더 aGMTCalendar = 캘린더.getInstance(TimeZone.getTimeZone("GMT'); 그러면 GMTCalendar 객체를 사용하여 수행되는 모든 작업은 GMT 표준 시간대로 수행되며 일광 절약 시간 또는 고정 오프셋이 적용되지 않는다.
틀렸어!
Calendar aGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
aGMTCalendar.getTime(); //or getTimeInMillis()
그리고
Calendar aNotGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT-2"));aNotGMTCalendar.getTime();
같은 시간에 돌아올 거야에 대한 IDem.
new Date(); //it's not GMT.
이는 Android에서 UTC 밀리초를 얻는 데 효과적이다.
Calendar c = Calendar.getInstance();
int utcOffset = c.get(Calendar.ZONE_OFFSET) + c.get(Calendar.DST_OFFSET);
Long utcMilliseconds = c.getTimeInMillis() + utcOffset;
이 코드는 현재 시간 UTC를 출력한다.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class Test
{
public static void main(final String[] args) throws ParseException
{
final SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
f.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(f.format(new Date()));
}
}
결과
2013-10-26 14:37:48 UTC
존 스키트의 대답에서 틀린 것 같은 것이 여기에 있다.그는 이렇게 말했다.
java.util.Date
항상 UTC에 있다.왜 현지 시간으로 생각하시죠?로컬 시간대를 사용하는 캘린더 인스턴스(instance)를 통해 표시하거나Date.toString()
지역 표준 시간대를 사용하기도 한다
그러나 이 코드는 다음과 같다.
System.out.println(new java.util.Date().getHours() + " hours");
가하고, GMT(UTC 시) 가(Ama)를 하지 않는다(No)Calendar
전혀 아니다SimpleDateFormat
조금도
그것이 바로 무언가가 잘못된 것처럼 보이는 이유다.
응답을 종합하면 다음과 같은 코드:
System.out.println(Calendar.getInstance(TimeZone.getTimeZone("GMT"))
.get(Calendar.HOUR_OF_DAY) + " Hours");
함 - 시 대 GMT 시 - 고getTime.getHours()
실종됐지 왜냐면 그렇게 하면Date()
이론적으로 GMT에 날짜를 저장하지만 로컬 시간대의 시간을 되돌려주는 객체.
UTC에 맞게 조정된 필드가 있는 Date 객체를 원하는 경우 Joda Time:
import org.joda.time.DateTimeZone;
import java.util.Date;
...
Date local = new Date();
System.out.println("Local: " + local);
DateTimeZone zone = DateTimeZone.getDefault();
long utc = zone.convertLocalToUTC(local.getTime(), false);
System.out.println("UTC: " + new Date(utc));
사용할 수 있는 항목:
Calendar aGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
그런 다음 GMTCalendar 객체를 사용하여 수행되는 모든 작업은 GMT 표준 시간대로 수행되며 일광 절약 시간 또는 고정 오프셋이 적용되지 않는다.나는 이전의 포스터가 옳다고 생각한다. 날짜() 개체가 항상 GMT를 반환한다는 것은 날짜 개체로 어떤 일을 하러 가서야 비로소 지역 표준시로 변환된다는 것이다.
SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MM-dd");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(dateFormatGmt.format(date));
다음은 내가 TOUTC를 구현한 것이다.
public static Date toUTC(Date date){
long datems = date.getTime();
long timezoneoffset = TimeZone.getDefault().getOffset(datems);
datems -= timezoneoffset;
return new Date(datems);
}
그것을 개선할 수 있는 몇 가지 방법이 있겠지만, 그것은 나에게 효과가 있다.
직접 사용 가능
SimpleDateFormat dateFormatGmt = new SimpleDateFormat("dd:MM:yyyy HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(dateFormatGmt.format(new Date())+"");
GMT 타임스탬프 객체를 얻기 위한 다른 제안:
import java.sql.Timestamp;
import java.util.Calendar;
...
private static Timestamp getGMT() {
Calendar cal = Calendar.getInstance();
return new Timestamp(cal.getTimeInMillis()
-cal.get(Calendar.ZONE_OFFSET)
-cal.get(Calendar.DST_OFFSET));
}
String 형식으로 GMT 시간을 얻는 또 다른 방법
String DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss z" ;
final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
String dateTimeString = sdf.format(new Date());
포함:
Calendar cal = Calendar.getInstance();
그러면cal
현재 날짜와 시간을 가지고 있다
또한 다음과 같은 방법으로 표준 시간대별 날짜 및 시간을 확인할 수 있다.
Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT-2"));
물어볼 수도 있다.cal.get(Calendar.DATE);
또는 다른 세부사항에 대한 일정 상수.
날짜와 타임스탬프는 자바에서 더 이상 사용되지 않는다.달력 수업은 그렇지 않다.
특정 시간대와 특정 형식의 시스템 시간을 렌더링하는 샘플 코드.
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class TimZoneTest {
public static void main (String[] args){
//<GMT><+/-><hour>:<minutes>
// Any screw up in this format, timezone defaults to GMT QUIETLY. So test your format a few times.
System.out.println(my_time_in("GMT-5:00", "MM/dd/yyyy HH:mm:ss") );
System.out.println(my_time_in("GMT+5:30", "'at' HH:mm a z 'on' MM/dd/yyyy"));
System.out.println("---------------------------------------------");
// Alternate format
System.out.println(my_time_in("America/Los_Angeles", "'at' HH:mm a z 'on' MM/dd/yyyy") );
System.out.println(my_time_in("America/Buenos_Aires", "'at' HH:mm a z 'on' MM/dd/yyyy") );
}
public static String my_time_in(String target_time_zone, String format){
TimeZone tz = TimeZone.getTimeZone(target_time_zone);
Date date = Calendar.getInstance().getTime();
SimpleDateFormat date_format_gmt = new SimpleDateFormat(format);
date_format_gmt.setTimeZone(tz);
return date_format_gmt.format(date);
}
}
출력
10/08/2011 21:07:21
at 07:37 AM GMT+05:30 on 10/09/2011
at 19:07 PM PDT on 10/08/2011
at 23:07 PM ART on 10/08/2011
간단히 말해서,Date
에UTC
사용 가능:
Calendar.getInstance(TimeZone.getTimeZone("UTC"));
다음에 대한 새로운 인스턴스를 구성할 경우Calendar
"UTC" 문서 TimeZone
.
만약 당신이 a가Date
그 달력에서 당신이 그냥 사용할 수 있는 물건getTime()
.
UTC에서 현재 날짜 시간을 변환하는 중:
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
DateTimeZone dateTimeZone = DateTimeZone.getDefault(); //Default Time Zone
DateTime currDateTime = new DateTime(); //Current DateTime
long utcTime = dateTimeZone.convertLocalToUTC(currDateTime .getMillis(), false);
String currTime = formatter.print(utcTime); //UTC time converted to string from long in format of formatter
currDateTime = formatter.parseDateTime(currTime); //Converted to DateTime in UTC
public static void main(String args[]){
LocalDate date=LocalDate.now();
System.out.println("Current date = "+date);
}
이것은 나에게 효과가 있어, GMT로 타임스탬프를 돌려줘!
Date currDate;
SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
SimpleDateFormat dateFormatLocal = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
long currTime = 0;
try {
currDate = dateFormatLocal.parse( dateFormatGmt.format(new Date()) );
currTime = currDate.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
사용할 수 있는 단순 기능:
편집: 이 버전은 최신 Java.time 클래스를 사용한다.
private static final DateTimeFormatter FORMATTER
= DateTimeFormatter.ofPattern("dd-MM-uuuu HH:mm:ss z");
public static String getUtcDateTime() {
return ZonedDateTime.now(ZoneId.of("Etc/UTC")).format(FORMATTER);
}
메서드에서 반환 값:
26-03-2022 17:38:55 UTC
원래 함수:
public String getUTC_DateTime() {
SimpleDateFormat dateTimeFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss z");
dateTimeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));//gmt
return dateTimeFormat.format(new Date());
}
위 기능의 반환:
26-03-2022 08:07:21 UTC
간단히 말하면.캘린더 개체는 표준 시간대에 대한 정보를 저장하지만 cal.getTime()을 수행하면 표준 시간대 정보가 손실된다.따라서 Timezone 변환의 경우 DateFormat 클래스를 사용하도록 조언하겠다...
이것이 나의 구현이다:
public static String GetCurrentTimeStamp()
{
Calendar cal=Calendar.getInstance();
long offset = cal.getTimeZone().getOffset(System.currentTimeMillis());//if you want in UTC else remove it .
return new java.sql.Timestamp(System.currentTimeMillis()+offset).toString();
}
Online NTP 서버에서 올바른 UTC 시간을 얻으려면 이 클래스를 사용하십시오.
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
class NTP_UTC_Time
{
private static final String TAG = "SntpClient";
private static final int RECEIVE_TIME_OFFSET = 32;
private static final int TRANSMIT_TIME_OFFSET = 40;
private static final int NTP_PACKET_SIZE = 48;
private static final int NTP_PORT = 123;
private static final int NTP_MODE_CLIENT = 3;
private static final int NTP_VERSION = 3;
// Number of seconds between Jan 1, 1900 and Jan 1, 1970
// 70 years plus 17 leap days
private static final long OFFSET_1900_TO_1970 = ((365L * 70L) + 17L) * 24L * 60L * 60L;
private long mNtpTime;
public boolean requestTime(String host, int timeout) {
try {
DatagramSocket socket = new DatagramSocket();
socket.setSoTimeout(timeout);
InetAddress address = InetAddress.getByName(host);
byte[] buffer = new byte[NTP_PACKET_SIZE];
DatagramPacket request = new DatagramPacket(buffer, buffer.length, address, NTP_PORT);
buffer[0] = NTP_MODE_CLIENT | (NTP_VERSION << 3);
writeTimeStamp(buffer, TRANSMIT_TIME_OFFSET);
socket.send(request);
// read the response
DatagramPacket response = new DatagramPacket(buffer, buffer.length);
socket.receive(response);
socket.close();
mNtpTime = readTimeStamp(buffer, RECEIVE_TIME_OFFSET);
} catch (Exception e) {
// if (Config.LOGD) Log.d(TAG, "request time failed: " + e);
return false;
}
return true;
}
public long getNtpTime() {
return mNtpTime;
}
/**
* Reads an unsigned 32 bit big endian number from the given offset in the buffer.
*/
private long read32(byte[] buffer, int offset) {
byte b0 = buffer[offset];
byte b1 = buffer[offset+1];
byte b2 = buffer[offset+2];
byte b3 = buffer[offset+3];
// convert signed bytes to unsigned values
int i0 = ((b0 & 0x80) == 0x80 ? (b0 & 0x7F) + 0x80 : b0);
int i1 = ((b1 & 0x80) == 0x80 ? (b1 & 0x7F) + 0x80 : b1);
int i2 = ((b2 & 0x80) == 0x80 ? (b2 & 0x7F) + 0x80 : b2);
int i3 = ((b3 & 0x80) == 0x80 ? (b3 & 0x7F) + 0x80 : b3);
return ((long)i0 << 24) + ((long)i1 << 16) + ((long)i2 << 8) + (long)i3;
}
/**
* Reads the NTP time stamp at the given offset in the buffer and returns
* it as a system time (milliseconds since January 1, 1970).
*/
private long readTimeStamp(byte[] buffer, int offset) {
long seconds = read32(buffer, offset);
long fraction = read32(buffer, offset + 4);
return ((seconds - OFFSET_1900_TO_1970) * 1000) + ((fraction * 1000L) / 0x100000000L);
}
/**
* Writes 0 as NTP starttime stamp in the buffer. --> Then NTP returns Time OFFSET since 1900
*/
private void writeTimeStamp(byte[] buffer, int offset) {
int ofs = offset++;
for (int i=ofs;i<(ofs+8);i++)
buffer[i] = (byte)(0);
}
}
그리고 다음 항목과 함께 사용:
long now = 0;
NTP_UTC_Time client = new NTP_UTC_Time();
if (client.requestTime("pool.ntp.org", 2000)) {
now = client.getNtpTime();
}
DateTimeString으로 UTC Time "now"가 필요한 경우 다음 기능을 사용하십시오.
private String get_UTC_Datetime_from_timestamp(long timeStamp){
try{
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
int tzt = tz.getOffset(System.currentTimeMillis());
timeStamp -= tzt;
// DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.getDefault());
DateFormat sdf = new SimpleDateFormat();
Date netDate = (new Date(timeStamp));
return sdf.format(netDate);
}
catch(Exception ex){
return "";
}
}
다음 구성 요소와 함께 사용:
String UTC_DateTime = get_UTC_Datetime_from_timestamp(now);
날짜 구문 분석을 피하고 GMT의 타임스탬프만 원하는 경우 다음을 사용하십시오.
final Date gmt = new Timestamp(System.currentTimeMillis()
- Calendar.getInstance().getTimeZone()
.getOffset(System.currentTimeMillis()));
public class CurrentUtcDate
{
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println("UTC Time is: " + dateFormat.format(date));
}
}
출력:
UTC Time is: 22-01-2018 13:14:35
필요에 따라 날짜 형식을 변경할 수 있다.
UTC의 현재 날짜
Instant.now().toString().replaceAll("T.*", "");
'programing' 카테고리의 다른 글
파이프 문자("|")로 문자열 분할 (0) | 2022.05.16 |
---|---|
Vuejs 렌더링 기능 내에서 슬롯을 복제하는 방법 (0) | 2022.05.16 |
C와 C++에서 'constant static'은 무엇을 의미하는가? (0) | 2022.05.16 |
C/C++ 프로그램과 그 플러그 인 DLL을 위한 최고의 무료 메모리 누수 검출기는 무엇인가? (0) | 2022.05.15 |
Vue 플러그인 설치 기능에 Vuex를 추가하고 구성 요소 간에 상태를 공유하는 방법이 있는가? (0) | 2022.05.15 |