【发布时间】:2018-06-04 11:14:54
【问题描述】:
这个问题看起来很简单,但我非常感谢您的帮助。多次上网搜索。
以下是在 GMT 中获取 Android 设备当前时区的代码:
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?
【问题讨论】:
-
最后一种情况的期望结果是什么?一串
5:45??你还需要什么偏移量?对于您真正想要获得的东西,可能会有更好的解决方案。 -
我会使用
OffsetDateTime.now(ZoneId.systemDefault()).getOffset()来获取ZoneOffset对象,然后尝试对其进行格式化。要在不是很新的 Android 上执行此操作,您需要先将 ThreeTenABP 添加到您的项目中。 -
朋友有什么更好的解决方案?
标签: java android xamarin timezone