获取当前 GMT 时间到晚上 9 点 gmt 的差异
Get difference from current GMT time until 9PM gmt
我每分钟 运行 执行一项任务,我想打印出当前格林威治标准时间和格林威治标准时间晚上 9 点之间的时差,我希望它一直 运行 所以一旦它到达格林威治标准时间晚上 9 点,然后它会重置为 24 小时,因此它会在第二天寻找格林威治标准时间晚上 9 点。
我安装了 jodatime 库
我试过了,这个获取当前的GMT时间?
TimeZone gmtTimeZone = TimeZone.getTimeZone("GMT");
TimeZone.setDefault(gmtTimeZone);
Calendar calendar = Calendar.getInstance(gmtTimeZone);
现在要 9 点,我可以得到小时吗?
if(calendar.get(Calendar.HOUR_OF_DAY); == 9) {
所以我的问题是如何从现在到晚上 9 点(格林威治标准时间)?并很好地格式化 IE; 16 小时 15 分 4 秒?
谢谢。
使用 Joda-Time,您可以使用以下辅助方法获取格林威治标准时间晚上 9 点之前的时间:
import org.joda.time.DateTimeZone;
import org.joda.time.LocalTime;
import org.joda.time.Period;
import org.joda.time.format.PeriodFormat;
public static String timeUntil(int hourOfDay, int minuteOfHour) {
Period period = Period.fieldDifference(LocalTime.now(DateTimeZone.UTC),
new LocalTime(hourOfDay, minuteOfHour))
.plusHours(24).normalizedStandard().withDays(0).withMillis(0);
StringBuffer buf = new StringBuffer();
PeriodFormat.wordBased(Locale.US).printTo(buf, period);
return buf.toString();
}
测试
System.out.println(timeUntil(21, 0)); // until 9 pm GMT
System.out.println(timeUntil(22, 0)); // until 10 pm GMT
示例输出
23 hours, 31 minutes and 48 seconds
31 minutes and 48 seconds
我会使用 Java 的 java.time
库方法而不是日历,如果你至少使用 Java 8。使用错误。
// in a 24 hour clock, 9PM = 21:00
final int ninePM = 21;
OffsetDateTime now = OffsetDateTime.now(ZoneOffset.UTC);
OffsetDateTime next9PM;
if (now.getHour() >= ninePM) {
next9PM = now.plus(1, ChronoUnit.DAYS)
.withHour(ninePM)
.truncatedTo(ChronoUnit.HOURS);
} else {
next9PM = now.withHour(ninePM)
.truncatedTo(ChronoUnit.HOURS);
}
return Duration.between(now, next9PM);
我每分钟 运行 执行一项任务,我想打印出当前格林威治标准时间和格林威治标准时间晚上 9 点之间的时差,我希望它一直 运行 所以一旦它到达格林威治标准时间晚上 9 点,然后它会重置为 24 小时,因此它会在第二天寻找格林威治标准时间晚上 9 点。
我安装了 jodatime 库
我试过了,这个获取当前的GMT时间?
TimeZone gmtTimeZone = TimeZone.getTimeZone("GMT");
TimeZone.setDefault(gmtTimeZone);
Calendar calendar = Calendar.getInstance(gmtTimeZone);
现在要 9 点,我可以得到小时吗?
if(calendar.get(Calendar.HOUR_OF_DAY); == 9) {
所以我的问题是如何从现在到晚上 9 点(格林威治标准时间)?并很好地格式化 IE; 16 小时 15 分 4 秒?
谢谢。
使用 Joda-Time,您可以使用以下辅助方法获取格林威治标准时间晚上 9 点之前的时间:
import org.joda.time.DateTimeZone;
import org.joda.time.LocalTime;
import org.joda.time.Period;
import org.joda.time.format.PeriodFormat;
public static String timeUntil(int hourOfDay, int minuteOfHour) {
Period period = Period.fieldDifference(LocalTime.now(DateTimeZone.UTC),
new LocalTime(hourOfDay, minuteOfHour))
.plusHours(24).normalizedStandard().withDays(0).withMillis(0);
StringBuffer buf = new StringBuffer();
PeriodFormat.wordBased(Locale.US).printTo(buf, period);
return buf.toString();
}
测试
System.out.println(timeUntil(21, 0)); // until 9 pm GMT
System.out.println(timeUntil(22, 0)); // until 10 pm GMT
示例输出
23 hours, 31 minutes and 48 seconds
31 minutes and 48 seconds
我会使用 Java 的 java.time
库方法而不是日历,如果你至少使用 Java 8。使用错误。
// in a 24 hour clock, 9PM = 21:00
final int ninePM = 21;
OffsetDateTime now = OffsetDateTime.now(ZoneOffset.UTC);
OffsetDateTime next9PM;
if (now.getHour() >= ninePM) {
next9PM = now.plus(1, ChronoUnit.DAYS)
.withHour(ninePM)
.truncatedTo(ChronoUnit.HOURS);
} else {
next9PM = now.withHour(ninePM)
.truncatedTo(ChronoUnit.HOURS);
}
return Duration.between(now, next9PM);