0

如果设备的时区不正确,时间将返回不正确的值,而日历将起作用。我的应用程序是使用 Time 构建的,我想保留它,但我需要修复时区问题。

Calendar c = Calendar.getInstance(); 
String out= c.get(Calendar.HOUR)+":"+c.get(Calendar.MINUTE);
Toast.makeText(this,  ""+out, Toast.LENGTH_SHORT).show();
//returns correct time

Time currentTime = new Time();
currentTime.setToNow();
Toast.makeText(this,  currentTime.format("%H:%M"), Toast.LENGTH_SHORT).show();
//returns incorrect time
4

1 回答 1

0

我不知道这是否会帮助你,但我有一个非常本地化的应用程序,所以我只是从 res/strings.xml 变量中强制时区。

像这样的东西:

Calendar currentTime = Calendar.getInstance(); 

SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm aa");
dateFormat.setTimeZone(TimeZone.getTimeZone(context.getString(R.string.app_timezone)));

Toast.makeText(this, dateFormat.format(input.getTime()), Toast.LENGTH_SHORT).show();

然后在 res/strings.xml

<string name="app_timezone">GMT+8:00</string>
于 2013-03-11T01:49:45.170 回答