Android 如何获取两个时区之间的时差?

2023-11-26

我需要获取不同时区的两个日期之间的时差。目前我正在这样做:

Calendar c1=Calendar.getInstance(TimeZone.getTimeZone("EDT"));
Calendar c2=Calendar.getInstance(TimeZone.getTimeZone("GMT"));
String diff=((c2.getTimeInMillis()-c1.getTimeInMillis())/(1000*60*60))+" hours";
new AlertDialog.Builder(this).setMessage(diff).create().show();

I get 0小时。我究竟做错了什么?


getTimeInMillis()返回毫秒数自 UTC 纪元以来。换句话说,时区与它无关。

我怀疑你实际上想要:

long currentTime = System.currentTimeMillis();
int edtOffset = TimeZone.getTimeZone(srcZoneId).getOffset(currentTime);
int gmtOffset = TimeZone.getTimeZone(targetZoneId).getOffset(currentTime);
int hourDifference = (gmtOffset - edtOffset) / (1000 * 60 * 60);
String diff = hourDifference + " hours";

... 在哪里srcZoneId and targetZoneId are valid时区 ID。请注意,“EDT”不是时区 ID;这充其量只是“半个时区”。我会strongly建议避免使用 3 个字母的缩写,它们实际上并不标识时区。例如,使用“America/New_York”和“Europe/London”即可。

当然,虽然上述方法在 2011 年是一个合理的方法,但如果您使用的是 Java 8 或更高版本确实值得在 java.time 中使用类java.util.Calendar, java.util.TimeZone etc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 如何获取两个时区之间的时差? 的相关文章

随机推荐

  • java - 通过引用传递双精度值

    如何在java中通过引用传递双精度值 example Double a 3 0 Double b a System out println a a b b a 5 0 System out println a a b b 此代码打印 a 3
  • 停止单个 UICollectionView 单元格流向屏幕中心

    我试图理解为什么集合视图仅将集合中的最后一个单元格居中对齐 我创建了一个简单的基于流布局的集合视图 我正在使用自动布局标志 我不确定是否会导致此问题 每当我从 集合 视图中删除一个单元格时 前几个单元格似乎工作正常并滚动到左侧 然而 当我删
  • 带有命令行 Blender 参数的 Python 脚本

    我是搅拌机和蟒蛇的新手 我有一个搅拌机模型 blend 我想将其批量渲染为多个图像 为每个图像提供一些属性 我用这些参数编写了一个 python 脚本 如下所示 import bpy pi 3 14159265 fov 50 scene b
  • 像素着色器效果示例

    我见过许多像素着色器效果示例 例如图像上的漩涡 但我想知道是否有人知道有关着色器效果的更实际用途的任何示例或教程 我并不是说漩涡效果没有它的用 途 只是我发现的许多示例都解释了基本效果 并且没有深入探讨如何巧妙地将其与另一种效果一起使用或过
  • powershell invoke-webrequest 登录网站

    我使用 invoke webrequest 登录网站取得了很大的成功 但我很困惑 我正在尝试登录https ctslink com or https direct ctslink com 登录表单有一个隐藏的令牌字段 每次我尝试登录时该字段
  • 填充 SVG 的一定百分比并设置填充动画

    目前 我正在开展一个项目 将州数据与另一个国家的数据进行比较 一个数据点是受保护土地的百分比 我想填写与该数据点匹配的州的百分比 例如 如果北卡罗来纳州 25 的地区受到保护 那么我希望该州 25 的地区得到保护 目前 我正在尝试使用 sv
  • Google GWT 跨浏览器支持:是废话吗?

    我在 FlashBuilder 中开发了一个浏览器部署的全文搜索应用程序 它与远程 Web 服务器进行 REST 通信 该软件适合一个很小的利基市场 它用于古代语言而不是现代语言 我不可能在它上面赚到任何钱 但我确实花了很多时间在它上面 现
  • Unicode 到 UTF-8

    我正在使用 vbscript 从 db2 提取数据并写入文件 写入文件如下 Set objTextFile objFSO CreateTextFile sFilePath True True 以 unicode 创建文件 但那是 xml 文
  • 如何将 android.graphics.Color 转换为 androidx.compose.ui.graphics.Color

    我正在绘制 Jetpack ComposeCanvas Canvas modifier modifier clipToBounds val colorEvaluator ArgbEvaluator colorEvaluator evalua
  • Inno Setup:如何更改背景颜色

    有没有办法将 Inno Setup 底部面板的背景颜色更改为白色 感谢您的帮助 您描述的底部面板实际上是向导表单的区域 因此您只需设置Color的财产WizardForm对象本身 Code procedure InitializeWizar
  • 我应该在 ARC 的 init 方法中引用 self.property 吗?

    一个简单的问题 如果我有一个属性和一个同名声明的 ivar 在 h文件中 Reminder reminder property nonatomic strong Reminder reminder 在 m 文件中 如果我使用 ARC 我应该
  • 通用 querydsl orderBy 具有左连接的动态路径生成

    我在使用 JPA 与 Querydsl 和 Hibernate 进行数据存储管理时遇到了问题 样例模型如下 Entity public class User ManyToOne JoinColumn name CATEGORY ID pri
  • IE https CORS XHR 请求失败,并显示 Script7002:XMLHttpRequest:网络错误 0x2eff

    在所有其他非 IE 浏览器中 以下代码片段效果很好 在两个不同的 IE11 浏览器 在不同的操作系统版本
  • 使用 BeautifulSoup CSS 选择器获取文本

    HTML 示例 h2 ABC span class numbers 123 span span class lower abc span h2 我可以通过以下方式获取数字 soup select name gt span numbers 0
  • 同一类型的多个对象集

    我尝试在 EF5 RC 中创建与此类似的数据上下文 class WordContext DbContext public DbSet
  • Javascript 类型数组和字节顺序

    我正在使用 WebGL 渲染二进制编码的网格文件 二进制文件以大端格式写入 我可以通过在十六进制编辑器中打开文件或使用 fiddler 查看网络流量来验证这一点 当我尝试使用 Float32Array 或 Int32Array 读取二进制响
  • NSNotificationCenter 选择器未被调用

    在我的 iPad 应用程序中 我在一堂课中注册了一条通知 NSNotificationCenter nc NSNotificationCenter defaultCenter nc addObserver self selector sel
  • 如何更改Android顶部工具栏菜单项图标大小

    如何更改 Android 工具栏中菜单项的大小 目前菜单的尺寸非常小 我想增加尺寸 如果有人知道请帮助我找到解决方案 应用程序栏 xml
  • 验证访问令牌 - Asp.Net 身份

    我正在使用 ASP Net Identity 来实现外部登录 用户使用 Google 登录后 我获得了 google 的外部访问令牌 然后我进行第二次 api 调用获取LocalAccessToken 它将外部访问令牌换成新的本地访问令牌
  • Android 如何获取两个时区之间的时差?

    我需要获取不同时区的两个日期之间的时差 目前我正在这样做 Calendar c1 Calendar getInstance TimeZone getTimeZone EDT Calendar c2 Calendar getInstance