android---世界时区列表

在资源文件res目录下创建xml文件夹,然后下载一个世界时区的XML文件。 文件列表如下
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <timezone id="Asia/Shanghai" name="北京/中国"></timezone>
    <timezone id="Asia/Hong_Kong" name="香港/中国"></timezone>
     <timezone id="Asia/Taipei" name="台北时间 (台北)"></timezone>
    <timezone id="Asia/Seoul" name="首尔"></timezone>
    <timezone id="Asia/Tokyo" name="东京/日本"></timezone>
     <timezone id="America/Denver" name="丹佛/美国山区"></timezone>
    <timezone id="America/Costa_Rica" name="哥斯达黎加/美国中部"></timezone>
    <timezone id="America/Chicago" name="芝加哥/美国中部"></timezone>
    <timezone id="America/Mexico_City" name="墨西哥城/美国中部"></timezone>
    <timezone id="America/Regina" name="里贾纳/美国中部"></timezone>
    <timezone id="Pacific/Majuro"  name = "马朱罗"></timezone>
    <timezone id="Pacific/Midway"  name="中途岛"></timezone>
    <timezone id="Pacific/Honolulu"  name="檀香山"></timezone>
    <timezone id="America/Anchorage"  name="安克雷奇"></timezone>
    <timezone id="America/Los_Angeles" name="洛杉矶/美国太平洋"></timezone>
    <timezone id="America/Tijuana" name="提华纳/美国太平洋"></timezone>
    <timezone id="America/Phoenix" name="凤凰城美国山区"></timezone>
    <timezone id="America/Chihuahua" name="奇瓦瓦"></timezone>
    <timezone id="America/Bogota" name="波哥大/哥伦比亚"></timezone>
    <timezone id="America/New_York" name="纽约/美国东部"></timezone>
    <timezone id="America/Caracas" name="加拉加斯/委内瑞拉"></timezone>
    <timezone id="America/Barbados" name="巴巴多斯/大西洋"></timezone>
    <timezone id="America/Manaus" name="马瑙斯/亚马逊"></timezone>
    <timezone id="America/Santiago" name="圣地亚哥"></timezone>
    <timezone id="America/St_Johns" name="圣约翰/纽芬兰"></timezone>
    <timezone id="America/Sao_Paulo" name="圣保罗"></timezone>
    <timezone id="America/Argentina/Buenos_Aires" name="布宜诺斯艾利斯"></timezone>
    <timezone id="America/Godthab" name="戈特霍布"></timezone>
    <timezone id="America/Montevideo" name="蒙得维的亚/乌拉圭"></timezone>
    <timezone id="Atlantic/South_Georgia" name="南乔治亚"></timezone>
    <timezone id="Atlantic/Azores" name="亚述尔群岛"></timezone>
    <timezone id="Atlantic/Cape_Verde" name="佛得角"></timezone>
    <timezone id="Africa/Casablanca" name="卡萨布兰卡"></timezone>
    <timezone id="Europe/London" name="伦敦/格林尼治"></timezone>
    <timezone id="Europe/Amsterdam" name="阿姆斯特丹/中欧"></timezone>
    <timezone id="Europe/Belgrade"  name="贝尔格莱德/中欧"></timezone>
    <timezone id="Europe/Brussels" name="布鲁塞尔/中欧"></timezone>
    <timezone id="Europe/Sarajevo" name="萨拉热窝/中欧"></timezone>
    <timezone id="Africa/Windhoek" name="温得和克"></timezone>
    <timezone id="Africa/Brazzaville" name="布拉扎维/西部非洲"></timezone>
    <timezone id="Asia/Amman" name="安曼/东欧"></timezone>
    <timezone id="Europe/Athens" name="雅典/东欧"></timezone>
    <timezone id="Asia/Beirut" name="贝鲁特/东欧"></timezone>
    <timezone id="Africa/Cairo" name="开罗/东欧"></timezone>
    <timezone id="Europe/Helsinki" name="赫尔辛基/东欧"></timezone>
    <timezone id="Asia/Jerusalem" name="耶路撒冷/以色列"></timezone>
    <timezone id="Europe/Minsk" name="明斯克"></timezone>
    <timezone id="Africa/Harare" name="哈拉雷/中部非洲"></timezone>
    <timezone id="Asia/Baghdad" name="巴格达"></timezone>
    <timezone id="Europe/Moscow" name="莫斯科"></timezone>
    <timezone id="Asia/Kuwait" name="科威特"></timezone>
    <timezone id="Africa/Nairobi" name="内罗毕/东部非洲"></timezone>
    <timezone id="Asia/Tehran" name="德黑兰/伊朗"></timezone>
    <timezone id="Asia/Baku" name="巴库"></timezone>
    <timezone id="Asia/Tbilisi" name="第比利斯"></timezone>
    <timezone id="Asia/Yerevan" name="埃里温"></timezone>
    <timezone id="Asia/Dubai" name="迪拜"></timezone>
    <timezone id="Asia/Kabul" name="喀布尔/阿富汗"></timezone>
    <timezone id="Asia/Karachi" name="卡拉奇"></timezone>
    <timezone id="Asia/Oral" name="乌拉尔"></timezone>
    <timezone id="Asia/Yekaterinburg" name="叶卡捷林堡"></timezone>
    <timezone id="Asia/Calcutta" name="加尔各答"></timezone>
    <timezone id="Asia/Colombo" name="科伦坡"></timezone>
    <timezone id="Asia/Katmandu" name="加德满都/尼泊尔"></timezone>
    <timezone id="Asia/Almaty" name="阿拉木图"></timezone>
    <timezone id="Asia/Rangoon" name="仰光/缅甸"></timezone>
    <timezone id="Asia/Krasnoyarsk" name="克拉斯诺亚尔斯克"></timezone>
    <timezone id="Asia/Bangkok" name="曼谷"></timezone>
    <timezone id="Asia/Irkutsk" name="伊尔库茨克"></timezone>
    <timezone id="Asia/Kuala_Lumpur" name="吉隆坡"></timezone>
    <timezone id="Australia/Perth" name="佩思"></timezone>
    <timezone id="Asia/Yakutsk" name="雅库茨克"></timezone>
    <timezone id="Australia/Adelaide" name="阿德莱德"></timezone>
    <timezone id="Australia/Darwin" name="达尔文"></timezone>
    <timezone id="Australia/Brisbane" name="布里斯班"></timezone>
    <timezone id="Australia/Hobart" name="霍巴特"></timezone>
    <timezone id="Australia/Sydney" name="悉尼"></timezone>
    <timezone id="Asia/Vladivostok" name="符拉迪沃斯托克/海参崴"></timezone>
    <timezone id="Pacific/Guam" name="关岛"></timezone>
    <timezone id="Asia/Magadan" name="马加丹"></timezone>
    <timezone id="Pacific/Auckland" name="奥克兰"></timezone>
    <timezone id="Pacific/Fiji" name="斐济"></timezone>
    <timezone id="Pacific/Tongatapu" name="东加塔布"></timezone>
</resources>

 
在Activity中获取xml文件里面的信息,定义一个hashmap和一个arraylist。hashmap用来根据名称获取id。arraylist用于显示在Listview中。

具体见MainActivity.java

 
package com.example.shiqu;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;

import com.example.shiqu.SearchActivity.myadapter;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.text.Editable;
import android.text.TextWatcher;
import android.text.format.Time;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnItemClickListener,TextWatcher{

//显示时区的列表
private ListView listView;

//存放时区信息的HashMap
private HashMap<String, String> map = new HashMap<String, String>();

//这个数组只存放时区名,用于列表显示
private ArrayList<String> list = new ArrayList<String>();

//搜索输入框
private EditText editText;
//列表显示的适配器
private myadapter name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.aabb);
editText = (EditText)findViewById(R.id.ss);
editText.addTextChangedListener(this);
//通过这个方法,去xml文件中获得时区信息
getdata();
//列表显示
name = new myadapter();
listView.setAdapter(name);
//列表单击事件监听
listView.setOnItemClickListener(this);
}
//通过时区的id获得当时的时间
public String getTime(String id)
{
TimeZone tz = TimeZone.getTimeZone(id);
//String s = "TimeZone   " + tz.getDisplayName(false, TimeZone.SHORT)
//+ " Timezon id :: " + tz.getID();
Time time = new Time(tz.getID());
time.setToNow();
int year = time.year;
int month = time.month;
int day = time.monthDay;
int minute = time.minute;
int hour = time.hour;
int sec = time.second;
return  "当前时间为:" + year +
 "年 " + (month+1) +
 "月 " + day +
 "日 " + hour +
 "时 " + minute +
 "分 " + sec +
 "秒";
}
//一次次的从xml文件获取信息
public void getdata()
{
try {
//将上次的数据清空,方便重新搜索
map.clear();
list.clear();
//获取信息的方法
Resources res = getResources();
XmlResourceParser xrp = res.getXml(R.xml.timezones);
//判断是否已经到了文件的末尾
while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
if (xrp.getEventType() == XmlResourceParser.START_TAG) {
String name = xrp.getName();
if (name.equals("timezone")) {
//关键词搜索,如果匹配,那么添加进去如果不匹配就不添加,如果没输入关键词“”,那么默认搜索全部
if(xrp.getAttributeValue(1).indexOf(editText.getText().toString()) != -1)
{
//0,标识id,1标识名称
map.put(xrp.getAttributeValue(1),
xrp.getAttributeValue(0));
list.add(xrp.getAttributeValue(1));
}
}
//搜索过第一个信息后,接着搜索下一个
xrp.next();
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//适配器类
class myadapter extends BaseAdapter{

Holder holder;
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}

@Override
public View getView(int pos, View view, ViewGroup arg2) {
// TODO Auto-generated method stub
holder = new Holder();
if(view == null)
{
view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, null);
holder.view = (TextView)view.findViewById(R.id.aagg);
view.setTag(holder);
}
else
{
holder = (Holder) view.getTag();
}
holder.view.setText(list.get(pos));
return view;
}
class Holder{
public TextView view;
}
}

@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
// TODO Auto-generated method stub
//点击后显示当前时区的时间
TextView textView = (TextView)view.findViewById(R.id.aagg);
Toast.makeText(MainActivity.this, getTime(map.get(textView.getText().toString())), 1000).show();
}

@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}

@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}

@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
//当输入框改变时,重新获取数据并通知列表更新
getdata();
name.notifyDataSetChanged();
}


}

列表每个item的布局文件  item.xml
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <TextView 
        android:id="@+id/aagg"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:textSize="18sp"
        android:gravity="center"
        android:text="北京"/>
    
</LinearLayout>

主界面的布局文件 activity_main.xml
 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal">
    
    <EditText 
        android:id="@+id/ss"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:hint="搜索时区"/>
    
</LinearLayout>
    
    <ListView 
        android:id="@+id/aabb"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: Android的时区列表是由操作系统提供的,用于设置设备当前所在时区的功能。Android操作系统提供了一个包含世界各地主要城市的时区列表。用户可以根据自己的所在位置或需要选择合适的时区。 Android的时区列表包含了全球大多数的时区,包括主要的城市和国家。用户可以通过进入设备的设置界面,打开日期和时间设置,然后选择时区选项来修改设备的当前时区。 Android的时区列表不仅可以根据用户选择的城市或国家自动调整时间,还可以根据夏令时的变化自动调整时间。Android会根据全球各地的夏令时规则来自动更新时区信息,确保设备的时间始终准确。 时区列表还可以帮助用户在不同的时区之间快速切换,例如当用户出差或旅行到不同的国家或地区时,可以根据目的地的时区设置来调整设备时间。 总之,Android的时区列表是为了方便用户设置设备的当前时区而提供的功能。它可以根据用户选择的城市或国家自动调整时间,也可以根据夏令时的变化自动更新时区信息,确保设备时间的准确性。 ### 回答2: Android系统提供了一个完整的时区列表,用于方便设置设备的时区时区是用来标识地理区域在时间上的差异,不同国家和地区有不同的时区,主要影响到了常用的时间显示、日期计算和日历功能等。 Android的时区列表包括世界上所有主要的国家和地区,以及它们的主要城市。用户可以通过进入设备的设置界面,在日期和时间设置中进行时区的选择和修改。在选择时区时,Android会根据用户所在的地理位置以及设备的网络连接情况,提供一个默认的时区选项,用户还可以手动滚动列表,查找并选择他们所在的国家或地理位置来进行时区的设置。 Android的时区列表是按照国家和地区的字母顺序排列的。用户可以根据他们所在的国家或地区的名称来查找并选择相应的时区。例如,如果用户位于中国,则可以选择“中国标准时间”,如果用户位于美国纽约,则可以选择“美国东部时间”。 时区列表中的每个时区都有一个标准时间和可能的夏令时时间,用户可以根据自己所在的地理位置来选择合适的时区。在选择并设置好时区后,设备上的时间将会根据选择的时区自动调整,并确保显示的时间是准确的。 总之,Android提供了一个全面的时区列表,用户可以根据自己所在的国家或地区,选择合适的时区来设置设备的时间,确保时间的显示和计算准确无误。 ### 回答3: Android时区列表是一组标准的时区名称和偏移量,用于在Android设备上设置和调整时间。Android时区列表是根据世界各个地区的时差和夏令时政策而形成的。 Android的时区列表中包含了全球的各个时区,从东至西覆盖了大部分地球表面。例如,亚洲地区的时区有北京时间、东京时间等;欧洲地区的时区有伦敦时间、柏林时间等;美洲地区的时区有纽约时间、洛杉矶时间等。 在Android设备上,可以根据所在地区和时区的选择来设置时间显示方式。例如,如果用户位于北京,就可以选择北京时间,这样设备上的时间就会自动根据北京时间进行调整。此外,Android还提供了自动时间和时区选项,可以通过与移动网络或GPS连接来自动获取设备所在地的时区信息。 Android时区列表不仅可以用于设置设备上的时间显示,还可以在开发应用程序时使用。开发者可以借助Android提供的时区列表来实现在不同时区下正确显示和处理时间相关的功能。 总之,Android时区列表是一组标准的时区名称和偏移量,用于在Android设备上设置和调整时间,涵盖了全球各个地区,方便用户选择所在地的时区,并可以在开发应用程序时使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值