Android(安卓)- 获取系统时间和网络时间
16lz
2021-01-26
Android获取时间的方法有获取网络时间或者使用系统时间,两者我感觉各有优点各有缺点。
话不多说,直接上代码,用的话拿就好!!!
通过网络获取时间,这是我写的一个工具类,在子线程直接调用就可以,参考一下:
public static Date getNetTime(){ String webUrl = "http://www.ntsc.ac.cn";//中国科学院国家授时中心 try { URL url = new URL(webUrl); URLConnection uc = url.openConnection(); uc.setReadTimeout(5000); uc.setConnectTimeout(5000); uc.connect(); long correctTime = uc.getDate(); Date date = new Date(correctTime); return date; } catch (Exception e) { return new Date(); } }
获取本地系统时间代码:
long time = System.currentTimeMillis();Date date = new Date(time);SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 E HH时mm分ss秒");main_date.setText(format.format(date));
全部代码:
package com.djp.test.test2;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;import android.widget.Toast;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.text.SimpleDateFormat;import java.util.Date;/** * 一般耗时操作都不允许放在主线程里直接操作,如网络操作等, * 一般需要开一个子线程去访问网络,然后通过handler去更新界面。 * 显示例如2019年02月22日 周五 14时56分08秒 *///温度 多云转晴 南风3-4级public class TwoActivity extends AppCompatActivity { private TextView textView; private Handler handler = new Handler(){ //此方法在主线程中使用,用于刷新UI @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 1: /*long time = System.currentTimeMillis(); Date date = new Date(time); SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 E HH时mm分ss秒"); main_date.setText(format.format(date));*/ // textView.setText(new SimpleDateFormat("yyyy年MM月dd日 E HH时mm分ss秒").format(new Date(System.currentTimeMillis())));//获取系统时间 textView.setText(new SimpleDateFormat("yyyy年MM月dd日 E HH时mm分ss秒").format(msg.obj));//获取网络时间 break; } } }; /** * 获取当前时间 * @return */ public static Date getNetTime(){ //设置了超时时长为5秒,若获取网络时间在5秒内无法获取,则返回本机时间。 String webUrl = "http://www.ntsc.ac.cn";//中国科学院国家授时中心 try { URL url = new URL(webUrl); URLConnection uc = url.openConnection();//生成连接对象 uc.setReadTimeout(5000); uc.setConnectTimeout(5000); uc.connect();//发出连接 long correctTime = uc.getDate();//取得网站日期时间 Date date = new Date(correctTime); return date; } catch (Exception e) { return new Date(); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_two); textView = findViewById(R.id.textview1); new TimeThread().start();//启动线程 } public class TimeThread extends Thread { @Override public void run() { super.run(); do { try { Thread.sleep(1000); Message msg = new Message(); msg.what = 1; //调用获取时间 msg.obj= getNetTime(); handler.sendMessage(msg); } catch (InterruptedException e) { e.printStackTrace(); e.printStackTrace(); } } while (true); } }}
更多相关文章
- fragment editText 焦点问题
- 如何获取Android系统时间是24小时制还是12小时制
- Android(安卓)网络连接:HttpUtils 的GET、POST与注解
- Android(安卓)使用PLDroidPlayer播放网络视频 根据视频角度自动
- 【5年Android从零复盘系列之六】Android自定义View(1):基础
- 调用Android原生裁剪方式裁剪图片并保存
- android 网络框架性能优化分析
- 关于android双卡手机sim卡信息采集适配的心得
- Android相机、相册获取图片,解决相机拍照图片被压缩模糊的情况