StackOverflow Android get Current UTC time および 現在の日付と時刻をJavaのUTCまたはGMTで取得するにはどうすればよいですか? の質問をしばらく掘り下げています。
私はGMTで私の電話の現在時刻を取得するために2つの方法を試しました。私はスペインにいます。差はGMT + 2です。例を見てみましょう:1ºattemp:フォーマットを作成してSystem.currentTimeMillis();に適用しました。
DateFormat dfgmt = new Java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dfgmt.setTimeZone(TimeZone.getTimeZone("GMT"));
String gmtTime = dfgmt.format(new Date());
//Using System.currentTimeMillis() is the same as new Date()
Date dPhoneTime = dfgmt.parse(gmtTime);
Long phoneTimeUTC = dPhoneTime.getTime();
その時間を別の時間に減算する必要があるため、ロングにキャストします。
DateFormat df = new Java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date arrivalDate = df.parse(item.getArrivalDate());
//the String comes from JSON and is for example:"UTC_arrival":"2011-05-16 18:00:00"
//which already is in UTC format. So the DateFormat doesnt have the GMT paramater as dfgmt
diff = arrival.getTime() - phoneTimeUTC ;
私もこれを試しました:
Calendar aGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Long phoneTimeUTC = aGMTCalendar.getTimeInMillis()
それでも、正しい違いがわかりません。しかし、これを行うと:
Long phoneTimeUTC = aGMTCalendar.getTimeInMillis()-3600000*2;
正常に動作します。
何か案は?
どうもありがとう、
デビッド。
Calendar.getTimeInMillis();を読む限り。 UTC時間をミリ秒で返します。次のコードを使用して、このサイトのエポックと比較しました http://www.xav.com/time.cgi 。
public int GetUnixTime()
{
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis();
int utc = (int)(now / 1000);
return (utc);
}
ジオラ
これは確かに機能します!
SimpleDateFormat dateFormatGmt = new SimpleDateFormat("dd:MM:yyyy HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(dateFormatGmt.format(new Date())+"");
形式を指定すると、GMTで取得されます。
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Date currentLocalTime = cal.getTime();
DateFormat date = new SimpleDateFormat("dd-MM-yyy HH:mm:ss z");
date.setTimeZone(TimeZone.getTimeZone("GMT"));
String localTime = date.format(currentLocalTime);
System.out.println(localTime);
見て、それがうまくいくかどうか見てください。
いつでも使用できます:
Calendar mCalendar = Calendar.getInstance(TimeZone.getTimeZone("gmt"));
long millies = mCalendar.getTimeInMillis();
または
Calendar mCalendar = Calendar.getInstance(TimeZone.getTimeZone("utc"));
long millies = mCalendar.getTimeInMillis();
出力:2016-08-01 14:37:48 UTC
final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
正常に動作します。