一、系统时间
系统时间是指设备当前所在的时区下的准确时间,可以通过以下代码获取:
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
String time = sdf.format(date);
其中,Calendar.getInstance()
可以获取当前日期和时间,SimpleDateFormat
用于格式化时间。
二、网络时间
网络时间是指从网络服务器获取的时间,可以通过以下代码获取:
try {
URL url = new URL("http://www.baidu.com");
URLConnection conn = url.openConnection();
conn.connect();
long time = conn.getDate();
Date date = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
String currentTime = sdf.format(date);
} catch (IOException e) {
e.printStackTrace();
}
其中,URLConnection
用于连接服务器,conn.getDate()
用于获取服务器当前时间。
三、GPS时间
GPS时间是指以格林威治时间为基准计算的时间,可以通过以下代码获取:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
long time = location.getTime();
Date date = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
String currentTime = sdf.format(date);
其中,LocationManager
用于获取位置信息,getLastKnownLocation
用于获取最后一次记录的位置信息,location.getTime()
用于获取记录时间。
四、注意事项
在获取时间时,要注意时区的问题。系统时间和网络时间已经自动加上了时区的偏移量,而GPS时间需要手动加上时区的偏移量。
总之,在实际开发中,开发人员应根据具体需求选择合适的时间获取方法,并正确处理时区的问题,以保证获取到的时间准确无误。