问题似乎很简单,但我真的很感激帮助。多次搜索互联网。
以下是获取GMT当前时区的代码:
Java.Util.Calendar mCalendar = new Java.Util.GregorianCalendar();
Java.Util.TimeZone mTimeZone = mCalendar.TimeZone;
int mGMTOffset = mTimeZone.RawOffset + (mTimeZone.InDaylightTime(new Java.Util.Date()) ? mTimeZone.DSTSavings : 0);
string timeDiff = Java.Util.Concurrent.TimeUnit.Hours.Convert(mGMTOffset, Java.Util.Concurrent.TimeUnit.Milliseconds).ToString();
输出:
如果移动时间是GMT-03:00那么timeDiff = -3
如果移动时间是GMT + 00:00那么timeDiff = 0
如果移动时间是GMT + 05:00那么timeDiff = 5
如果移动时间是GMT + 05:45那么timeDiff = 5(正确)
问题出现时GMT是十进制值,如5:45显示5。
在这些类型的场景中我该怎么做?
我从以下链接获得了帮助 How to get the timezone offset in GMT(Like GMT+7:00) from android device?
答案 0 :(得分:1)
使用GregorianCalender,您可以获得时区,请查看以下内容 代码
Calendar mCalendar = new GregorianCalendar();
TimeZone mTimeZone = mCalendar.getTimeZone();
int mGMTOffset = mTimeZone.getRawOffset();
double sZone = (double) (TimeUnit.MINUTES.convert(mGMTOffset,TimeUnit.MILLISECONDS));
string timeDiff = sZone / 60;
答案 1 :(得分:0)
ZoneOffset currentOffset = OffsetDateTime.now(ZoneId.systemDefault()).getOffset();
System.out.println("Current offset is GMT" + currentOffset);
今天在欧洲/哥本哈根时区运行上述片段给出了:
当前偏移为GMT + 02:00
丹麦在标准时间+01:00,夏令时+02:00(DST)。我们目前正在使用夏令时,因此输出符合预期,并考虑到夏令时。
不知道Xamarin我给你Java代码并信任你转换。
如果我将JVM的时区设置为亚洲/加德满都,我会得到您要求的偏移量:
当前偏移为GMT + 05:45
链接: Oracle tutorial: Date Time解释如何使用java.time
。