Java: Calculate month end date based on timezone(Java:根据时区计算月末日期)
问题描述
我有方法根据时区查找月末日期.
I have method to find month end date based on the timezone.
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("CET"));
calendar.set(
Calendar.DAY_OF_MONTH,
calendar.getActualMaximum(Calendar.DAY_OF_MONTH)
);
System.out.println(calendar.getTime());`
它显示输出:Thu Aug 30 18:04:54 PDT 2018
.
但是,它应该给我 CET 的输出.
It should, however, give me an output in CET.
我错过了什么?
推荐答案
Calendar.getTime()
方法返回一个 Date 对象,然后将其打印在代码中.问题是 Date
类 不包含任何时区的概念,即使您使用 Calendar.getInstance()
指定了时区称呼.是的,这确实令人困惑.
The Calendar.getTime()
method returns a Date object, which you then printed in your code. The problem is that the Date
class does not contain any notion of a timezone even though you had specified a timezone with the Calendar.getInstance()
call. Yes, that is indeed confusing.
因此,为了在特定时区打印 Date
对象,您必须使用 SimpleDateFormat 类,打印前必须调用 SimpleDateFormat.setTimeZone()
指定时区.
Thus, in order to print a Date
object in a specific timezone, you have to use the SimpleDateFormat class, where you must call SimpleDateFormat.setTimeZone()
to specify the timezone before you print.
这是一个例子:
import java.util.Calendar;
import java.util.TimeZone;
import java.text.SimpleDateFormat;
public class TimeZoneTest {
public static void main(String argv[]){
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("CET"));
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println("calendar.getTime(): " + calendar.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss z");
sdf.setTimeZone(TimeZone.getTimeZone("CET"));
System.out.println("sdf.format(): " + sdf.format(calendar.getTime()));
}
}
这是我电脑上的输出:
calendar.getTime(): Fri Aug 31 01:40:17 UTC 2018
sdf.format(): 2018-Aug-31 03:40:17 CEST
这篇关于Java:根据时区计算月末日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java:根据时区计算月末日期
基础教程推荐
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01