Android Studio 中 calendar设置系统时区无效的问题

android里用Calendar取得的时间和手机显示的时间为何不一致?

android中,Calendar会默认使用格林威治时间,Date 及 java.text.SimpleDateFormat都会以与语言环境有关的方法来格式化和解析日期。

之前找了很多种方法都是IntelliJ IDEA 能用,而Android Studio不能用。

Android Studio 中 calendar设置时区无效的问题,改成下面这种形式便可解决。

Android 8.0以前

TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
Calendar calendar = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = formatter.format(calendar.getTime());
Log.d("testTime",time);

Android 8.08.0以后设置时区,有所改动,不能直接设置 比如GMT+8:00这样的时区了,要设置 时区的id。

Calendar cal=Calendar.getInstance();//能获取当前的时间
//设置系统时区
TimeZone.setDefault(TimeZone.getTimeZone(timezone));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
return sdf.format(cal.getTime());

timezone 要设置为 比如 北京时间 为:Asia/Shanghai 这就是北京时间的时区id。

设置为北京时间的格式显示:

Calendar cal=Calendar.getInstance();//能获取当前的时间
//设置系统时区
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
return sdf.format(cal.getTime());

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值