//获取当前时区 public static int getTimeZone() { Date date=new Date(); //取得本地时间 Calendar cal =
//获取当前时区
public static int getTimeZone() {
Date date=new Date();
//取得本地时间
Calendar cal = Calendar.getInstance();
//取得时间偏移量
int offset = cal.get(Calendar.ZONE_OFFSET)/(1000*60*60);
//取得夏令时差
int dstOffset=cal.get(Calendar.DST_OFFSET)/(1000*60*60);
//从本地时间里扣除这些变量,即可以取得UTC时间
cal.add(Calendar.MILLISECOND, -(offset+dstOffset));
cal.add(Calendar.HOUR, -(offset + dstOffset));
Long timeStampUTC = cal.getTimeInMillis();
Long timeStamp = date.getTime();
Long timeZone = (timeStamp - timeStampUTC) / (1000 * 3600);return timeZone.intValue();
}
世界时区转换的Demo
import java.text.DateFORMat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.TimeZone;import Android.app.Activity;import android.os.Bundle;import android.util.Log;import com.su.test.R;public class MainActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();initListeners();initValues();}private void initViews() {// TODO Auto-generated method stub// 例如:北京时间:2014-11-28 11:12:45 转化美国洛杉矶应为 2014-11-27 19:12:45Log.d("test", "北京时间转化美国洛杉矶时间:" + getZoneTime("2014-11-28 11:12:45", "yyyy-MM-dd HH:mm:ss"));//测试结果 D/test(23630): 北京时间转化美国洛杉矶时间:2014-11-27 19:12:45 与预期一致// 例如:北京时间:2014-11-28 11:13:42 转化英国伦敦应为 2014-11-28 03:13:42Log.d("test", "北京时间转化英国伦敦时间:" + getZoneTime("2014-11-28 11:13:42", "yyyy-MM-dd HH:mm:ss"));//测试结果 D/test(24005): 北京时间转化英国伦敦时间:2014-11-28 03:13:42 与预期一致// 例如:北京时间:2014-11-28 11:14:00 转化华宝客户-肯尼亚时间应为 2014-11-28 06:13:59Log.d("test", "北京时间转化肯尼亚(内罗毕)时间:" + getZoneTime("2014-11-28 11:14:00", "yyyy-MM-dd HH:mm:ss"));//测试结果 D/test(24553): 北京时间转化肯尼亚(内罗毕)时间:2014-11-28 06:14:00 与预期一致// 结论: getZoneTime(String strDate, String formatStr) 没问题}private void initListeners() {// TODO Auto-generated method stub}private void initValues() {// TODO Auto-generated method stub}public static String getZoneTime(String strDate, String formatStr) {long defZone = 8 * 60 * 60 * 1000;Date date = StringToDate(strDate, formatStr);TimeZone zone = TimeZone.getDefault();return DateToString(new Date(date.getTime() - defZone + zone.getRawOffset()), formatStr);}public static Date StringToDate(String dateStr, String formatStr) {DateFormat dd = new SimpleDateFormat(formatStr);Date date = null;try {date = dd.parse(dateStr);} catch (java.text.ParseException e) {e.printStackTrace();}return date;}public static String DateToString(Date date, String format) {SimpleDateFormat sdf = new SimpleDateFormat(format);return sdf.format(date);}}
来源地址:https://blog.csdn.net/weixin_43824829/article/details/130626896
--结束END--
本文标题: android 获取手机当前时区,解决时间偏移量和夏令时差问题
本文链接: https://www.lsjlt.com/news/421548.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0