我想从下面图片中显示的微调器列表中显示所选时区的UTC时间的吐司信息。
下面是我的代码:
Spinner tz;
tz = (Spinner) findViewById(R.id.edit);
String[] idArray = TimeZone.getAvailableIDs();
ArrayAdapter<String> idAdapter = new ArrayAdapter<>(getApplicationContext(),R.layout.custom,idArray);
idAdapter.setDropDownViewResource(R.layout.custom);
tz.setAdapter(idAdapter);
for(int i = 0; i < idAdapter.getCount(); i++) {
if(idAdapter.getItem(i).equals(TimeZone.getDefault().getID())) {
tz.setSelection(i);
}
}
我试过这个,但无法得到我的结果
http://developer.android.com/reference/java/util/TimeZone.html#getDisplayName%28boolean
答案 0 :(得分:1)
为此,您必须使用setOnItemSelectedListener。示例用法如下所示。
tz.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
SimpleDateFormat df = new SimpleDateFormat("dd MMM HH:mm a", Locale.getDefault());
df.setTimeZone(TimeZone.getTimeZone(idAdapter.getItem(position))); //format in given timezone
String strDate = df.format((new Date()).getTime());
//Display the Toast
Toast.makeText(getApplicationContext(), strDate, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// your code here
}
});
请注意,在构建视图时也会调用onItemSelected方法,因此可以考虑将其放在onCreate()方法调用中。
希望这有帮助。
答案 1 :(得分:0)
不确定我是否理解您的问题,但是: 您是说要显示UTC中不同时区的时间? UTC是一个时区,因此UTC的时间将始终与您的每个选择的时间相同。您可能希望显示所选时区的本地时间,而不是UTC。
要这样做,请使用:
System.currentTimeMillis()
它为您提供自1970年1月1日00:00:00 UTC以来的毫秒数。
使用DateFormat,您可以设置时区并将其转换为当地时间。
DateFormat df = DateFormat.getTimeInstance();
//Here set the timezone according to the selection in your spinner
df.setTimeZone(TimeZone.getTimeZone("gmt"));
String gmtTime = df.format(new Date());
希望这会有所帮助 干杯
答案 2 :(得分:0)
要制作吐司,请使用
Toast.makeText(getApplicationContext(),gmtTime,Toast.LENGTH_SHORT)