Java 在android中如何在列表中显示带有国家和城市名称的时区?

Java 在android中如何在列表中显示带有国家和城市名称的时区?,java,android,android-studio,timezone,timezone-offset,Java,Android,Android Studio,Timezone,Timezone Offset,我正在开发一个应用程序,我必须在微调器中显示带有国家和城市名称的时区。我使用了时区类。但在这种情况下,我只得到了timezoneId和timezoneName。如何在微调器中显示带有国家和城市名称的时区 解决方案:- private String[] timezoneArray; private Spinner spinner_timezone; spinner_timezone = (Spinner) findViewById(R.id.spinner_timezone); 那就叫这个吧

我正在开发一个应用程序,我必须在
微调器中显示带有国家和城市名称的时区。我使用了
时区
类。但在这种情况下,我只得到了
timezoneId
timezoneName
。如何在
微调器中显示带有国家和城市名称的时区

解决方案:-

private String[] timezoneArray;
private Spinner spinner_timezone;

spinner_timezone = (Spinner) findViewById(R.id.spinner_timezone);
那就叫这个吧

 timezoneArray = TimeZone.getAvailableIDs();
        CustomAdapter customAdapter = new CustomAdapter(getApplicationContext(), timezoneArray);
        spinner_timezone.setAdapter(customAdapter);
        for (int i = 0; i < timezoneArray.length; i++) {
            if (timezoneArray[i].equals(TimeZone.getDefault().getID())) {
                spinner_timezone.setSelection(i);
                break;
            }
        }
和自定义微调器项目

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="10dp"
        android:textSize="15sp"
        android:text="Wifi Airtel"
        android:textColor="#000" />
</RelativeLayout>

您考虑过使用吗?它提供了一个
DateTimeUtils.getDefaultTimeZoneNames()
方法,该方法返回时区名称的映射


您可以找到更多信息

请参阅本文档,该时区通常以地区(大陆或海洋)和城市(或岛屿(集团))给出,例如美洲/亚达克、亚洲/曼谷、大西洋/加那利、印度/马埃。这对你合适吗?@OleV.V。我想展示加尔各答(印度)、柏林(德国)这样的时区,但在我的例子中,它显示的是“欧洲/柏林”。我在这里没有县名。是否有任何api或库在列表中显示带有国家和城市名称的显示时区?@crammeur我已经检查了文档。但它不能解决我的问题。我不知道有这样的API,但可能存在。我想,你基本上需要一个城镇和国家的数据库。如果你准备接受一个外部图书馆——我同意,这可能会有很大的好处——为什么不去找乔达时代的继任者呢?time已经进行了后端口,并且该后端口在年针对Android进行了调整。在新的Android(API级别26或更高)上,甚至内置了java.time,不需要外部库。@OleV.V。我只是建议约达时间,因为这是我知道的时间,但我会看看ThreeTenABP,谢谢!它很难按照询问者在年提出的要求,以加尔各答(印度)或柏林(德国)的格式给出时区。它还使用了过时且设计拙劣的
时区
类。它的现代替代品是java.time中的
ZoneId
类,这是一个现代的java日期和时间API。我感谢您的经验,您可以更新答案或发布新答案亲爱的:),我也会检查它
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="10dp"
        android:textSize="15sp"
        android:text="Wifi Airtel"
        android:textColor="#000" />
</RelativeLayout>