你可以利用阿里云的开放API,例如API市场中的北京时间追踪等API,或者利用其他开源的API服务,获取北京时间。
以下是一个简单Java在Android上获取北京时间的代码示例:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
try {
final String beijingTime = getNetTime();
// 将获取的时间信息显示在UI上
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, beijingTime, Toast.LENGTH_LONG).show();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
public String getNetTime() {
try{
URL url = new URL("http://www.bjtime.cn");
URLConnection uc = url.openConnection();// 生成连接对象
uc.connect(); // 发出连接
long ld = uc.getDate(); // 取得网站日期时间
Date date = new Date(ld); // 转换为标准时间对象
// 格式化格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
return sdf.format(date);
}catch (Exception e) {
return "获取失败";
}
}
}
注意:以上代码示例仅供参考,并不能保证对于所有情况都能工作。实际编程中需要你根据实际情况做适当修改。
Android获取北京时间API一般需要下面三步:
1.添加网络权限
在AndroidManifest.xml中添加
<uses-permission android:name="android.permission.INTERNET" />
2.在主线程外发起网络请求
网络请求不能在主线程执行,所以需要创建新的线程:
new Thread() {
@Override
public void run() {
super.run();
try {
String urlString = "http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp";
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(8000);
conn.setReadTimeout(8000);
int responseCode = conn.getResponseCode();
if (responseCode == 200) {
InputStream inputStream = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String result = reader.readLine();
// 处理获取到的结果
// ...
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
3.处理获取到的结果
上面的网络请求返回的是一个json字符串,可以使用android提供的JSONObject来解析。
JSONObject jsonObject = new JSONObject(result);
String t = jsonObject.getString("t");
这样得到的t就是一个时间戳(单位是毫秒),再转换成北京时间就可以了。
long time = Long.parseLong(t);
Date date = new Date(time);
以上就是使用阿里的服务器来获取北京时间的方法,但这是一种比较曲折的方法,而且依赖于阿里的服务器。实际开发中,一般更推荐使用服务器时间。由app向自己的服务器请求时间,由服务器返回当前的北京时间。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/166817.html