8

Androidバージョン2.3.3のタイムゾーン選択リストのデフォルトコードをどこかで入手できるかどうか疑問に思っていましたか?

ここに画像の説明を入力

ここに画像の説明を入力

4

2 に答える 2

11
   String[] ids=TimeZone.getAvailableIDs();
   for(int i=0;i<ids.length;i++)
   {
       System.out.println("Availalbe ids.................."+ids[i]);
       TimeZone d= TimeZone.getTimeZone(ids[i]);
       System.out.println("time zone."+d.getDisplayName());
       System.out.println("savings."+d.getDSTSavings());
       System.out.println("offset."+d.getRawOffset());

      /////////////////////////////////////////////////////
      if (!ids[i].matches(".*/.*")) {
          continue;
      }

      String region = ids[i].replaceAll(".*/", "").replaceAll("_", " ");
      int hours = Math.abs(d.getRawOffset()) / 3600000;
      int minutes = Math.abs(d.getRawOffset() / 60000) % 60;
      String sign = d.getRawOffset() >= 0 ? "+" : "-";

      String timeZonePretty = String.format("(UTC %s %02d:%02d) %s", sign, hours, minutes, region);
      System.out.println(timeZonePretty);
      //////////////////////////////////////////////////////////////////
   }
    ListView listitems=(ListView)findViewById(R.id.list);
  ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ids);
   listitems.setAdapter(adapter);
  }

TimeZone のドキュメント。http://developer.android.com/reference/java/util/TimeZone.html

タイムゾーンを設定するには

以下は、アメリカのタイムゾーンを設定するためのサンプルコードです。

  // First Create Object of Calendar Class
  Calendar calendar = Calendar.getInstance();        
  // Now Set the Date using DateFormat Class
  SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss z"); 
  // Finally Set the time zone using SimpleDateFormat Class's setTimeZone() Method
  sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles")); 
于 2013-03-21T08:04:15.780 に答える
7

残念ながら、Android の設定は、設定アプリケーションに含まれる XML からタイムゾーン リストを取得します。これはソース コード(161 行目)で確認できます。

 private List<HashMap> getZones() {
     List<HashMap> myData = new ArrayList<HashMap>();
     long date = Calendar.getInstance().getTimeInMillis();
     try {
        XmlResourceParser xrp = getResources().getXml(R.xml.timezones);
     ...
 }

Google カレンダーなどの他のアプリケーションには、独自の値の配列があります。これらのリソースのリバース エンジニアリングを行うことで確認できます。

したがって、独自のリストを維持したくない場合 (多言語を考慮して...) は、java.util.TimeZoneによって提供されるリストを縮小し、必要なタイムゾーンのみを @ として表示することをお勧めします。ラグナンダンは、彼の回答のコメントであなたを推薦しました。

于 2013-05-03T12:37:56.760 に答える