如何以UTC格式显示所选TimeZone的Toast

时间:2016-02-01 12:15:07

标签: java android datetime timezone

我想从下面图片中显示的微调器列表中显示所选时区的UTC时间的吐司信息。

enter image description here

下面是我的代码:

 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

3 个答案:

答案 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)