【发布时间】:2021-02-17 08:46:07
【问题描述】:
我正在开发一个简单的倒计时应用程序来告诉我距离某个 GMT 时间还有多长时间。
示例:
输入:01-05-2021-02-00-00
输出:(如果输入的时间是本地时间)72 天 15 小时 21 分钟 49 秒
输出(如果输入的时间是格林威治标准时间):72 天 17 小时 21 分钟 33 秒
...我相信应该是 16 小时而不是 17 小时。
在输入时间为 4 月 1 日至 10 月 31 日之前,一切正常。我给它格林威治标准时间,并将其转换为我的本地(柏林+1)时间。如果输入的时间来自提到的时间间隔,它会显示柏林和格林威治标准时间之间的 +2 小时差异。因为它只在一年中的特定时期(任何一年)都是这样,所以看起来很奇怪,我不知道出了什么问题?
我的代码:
String result = "";
String date = input;
SimpleDateFormat date_format = new SimpleDateFormat("dd-MM-yyyy-HH-mm-ss");
Date target_date = null;
try {
target_date = date_format.parse(date);
} catch (ParseException e) {
result += e.getMessage();
}
Date now = new Date();
long secs = 0;
if(local_time_radio_btn.isSelected()) {
secs = (target_date.getTime() - now.getTime()) / 1000;
}else {
int offset = target_date.getTimezoneOffset();
long n = 1000 * offset * 60;
long gmt = target_date.getTime() -n;
long now_gmt = now.getTime();
secs = (gmt - now_gmt) / 1000;
}
long days = secs / (60*60*24);
secs = secs % (60*60*24);
long hours = secs / (60*60);
secs = secs % (60*60);
long mins = secs / 60;
secs = secs % 60;
result += days+" days, "+hours+" hours, "+mins+" mins, "+secs +" secs";
【问题讨论】:
-
不,编辑帖子并不奇怪。这是 StackOverflow 的关键特性之一——任何人都可以改进帖子。我的贡献是让您的帖子更具可读性,并符合网站指南。
-
如果您认为 wiki 令人毛骨悚然,那么您可能需要考虑避免使用 StackOverflow 和 Wikipedia。
-
@Flimzy 肯定会觉得很糟糕
-
显而易见的问题:您是否考虑了夏令时(如果适用)?既然我在评论:编辑很好,没有超出规范。
-
@John3136 谢谢! :) 我会检查一下,听起来可能是这样......但是真实性/个性/美不是所有东西都是一样的,主要是避免规范:D