在Android中启动时区列表以获取拾取/结果

在Android中启动时区列表以获取拾取/结果,android,Android,我看到在Android中可以通过intent进行操作,但我想做的是只启动显示时区的列表(单击“选择时区”),并在不修改用户日期和时间设置的情况下返回所选值。你知道怎么做吗?我知道这很旧,但我也很感兴趣 我一直在研究这个问题,我认为这是不可能的。我真的希望能够做同样的事情。它可以归结为将一些GPL Android代码移植到我的应用程序(ack),找到一个perconfigured DB和代码(JAR或java),或者最后自己编写代码(双重ack)。时区是我的专利,我希望不用自己写代码。根据用户的位

我看到在Android中可以通过intent进行操作,但我想做的是只启动显示时区的列表(单击“选择时区”),并在不修改用户日期和时间设置的情况下返回所选值。你知道怎么做吗?

我知道这很旧,但我也很感兴趣


我一直在研究这个问题,我认为这是不可能的。我真的希望能够做同样的事情。它可以归结为将一些GPL Android代码移植到我的应用程序(ack),找到一个perconfigured DB和代码(JAR或java),或者最后自己编写代码(双重ack)。时区是我的专利,我希望不用自己写代码。根据用户的位置,有很多例外情况。

如果您谈论的是微调器,您可以执行以下操作:

ArrayAdapter <CharSequence> adapter =
          new ArrayAdapter <CharSequence> (this, android.R.layout.simple_spinner_item );
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    String[]TZ = TimeZone.getAvailableIDs();
    ArrayList<String> TZ1 = new ArrayList<String>();
    for(int i = 0; i < TZ.length; i++) {
        if(!(TZ1.contains(TimeZone.getTimeZone(TZ[i]).getDisplayName()))) {
            TZ1.add(TimeZone.getTimeZone(TZ[i]).getDisplayName());
        }
    }
    for(int i = 0; i < TZ1.size(); i++) {
        adapter.add(TZ1.get(i));
    }
    final Spinner TZone = (Spinner)findViewById(R.id.TimeZoneEntry);
    TZone.setAdapter(adapter);
    for(int i = 0; i < TZ1.size(); i++) {
        if(TZ1.get(i).equals(TimeZone.getDefault().getDisplayName())) {
            TZone.setSelection(i);
        }
    }
ArrayAdapter适配器=
新的ArrayAdapter(这是android.R.layout.simple\u微调器项目);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
字符串[]TZ=TimeZone.getAvailableIDs();
ArrayList TZ1=新的ArrayList();
对于(int i=0;i

查看更多关于时区的文献

Android系统类ZonelList.javaZonePicker.java用于在“日期和时间”设置中构建时区列表。

受上述CornCats示例的启发,但采用了一种与我适用的适配器的稍有不同且更短的实现:

private void populateAndUpdateTimeZone() {

   //populate spinner with all timezones
    mSpinner = (Spinner) findViewById(R.id.mytimezonespinner);
    String[] idArray = TimeZone.getAvailableIDs();
    idAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,
            idArray);
    idAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mSpinner.setAdapter(idAdapter);

     // now set the spinner to default timezone from the time zone settings
    for(int i = 0; i < idAdapter.getCount(); i++) {
        if(idAdapter.getItem(i).equals(TimeZone.getDefault().getID())) {
            mSpinner.setSelection(i);
        }
    }
private void populateandUpdate时区(){
//使用所有时区填充微调器
mSpinner=(微调器)findViewById(R.id.myTimeZoneSpiner);
字符串[]idArray=TimeZone.getAvailableIDs();
idAdapter=new ArrayAdapter(这是android.R.layout.simple\u微调器\u下拉菜单\u项,
艾达瑞);
idAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
mSpinner.setAdapter(idAdapter);
//现在从时区设置中将微调器设置为默认时区
对于(int i=0;i
如果你想知道用户基于lat long的时区,我就用这个。我知道这个很旧,但链接是死的谷歌知道它在哪里;-)