Java 日历类和更改的时区冲突
我希望将日期格式作为yyyy-mm-ddT00:00:00和不同时区作为输出。但在这里,我得到了日历日期输出中的默认时区Java 日历类和更改的时区冲突,java,date,calendar,Java,Date,Calendar,我希望将日期格式作为yyyy-mm-ddT00:00:00和不同时区作为输出。但在这里,我得到了日历日期输出中的默认时区 Code part as:- Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); cal.set(Calendar.YEAR, 2014); cal.set(Calendar.MONTH, Calendar.NOVEMBER); cal.set(Calendar.DATE
Code part as:-
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
cal.set(Calendar.YEAR, 2014);
cal.set(Calendar.MONTH, Calendar.NOVEMBER);
cal.set(Calendar.DATE, 18);
cal.set(Calendar.HOUR, 20);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
System.out.println("DateTime : " + cal.getTime()+ " \n Zone :: "+ calFrom.getTimeZone().getDisplayName());
输出为:
DateTime : Wed Nov 19 05:30:00 IST 2014
Zone :: Greenwich Mean Time
在这里,我将时区设置为GMT,但在日期中显示IST,以及如何根据更改的时区将其转换为2014-11-19T00:00:00
我希望将日期格式设置为yyyy-mm-ddT00:00:00,并将不同的时区作为输出
然后需要使用某种描述的DateFormat
,例如SimpleDateFormat
。特别是,DateFormat
知道:
- 格式
- 用于诸如月份名称之类的内容的区域设置
- 时区
- 日历系统
Date
,Calendar.getTime()
返回的是日期,但不知道这些。它只是代表一个时间点,可以用许多不同的方式来表示
您可能需要以下内容:
TimeZone zone = TimeZone.getTimeZone("Etc/UTC");
Calendar cal = Calendar.getInstance(zone);
cal.clear(Calendar.MILLISECOND);
cal.set(2014, Calendar.NOVEMBER, 18, 20, 0, 0); // Why 20 if you want an hour of 0?
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
format.setTimeZone(zone);
String text = format.format(cal.getTime());
我希望将日期格式设置为yyyy-mm-ddT00:00:00,并将不同的时区作为输出
然后需要使用某种描述的DateFormat
,例如SimpleDateFormat
。特别是,DateFormat
知道:
- 格式
- 用于诸如月份名称之类的内容的区域设置
- 时区
- 日历系统
Date
,Calendar.getTime()
返回的是日期,但不知道这些。它只是代表一个时间点,可以用许多不同的方式来表示
您可能需要以下内容:
TimeZone zone = TimeZone.getTimeZone("Etc/UTC");
Calendar cal = Calendar.getInstance(zone);
cal.clear(Calendar.MILLISECOND);
cal.set(2014, Calendar.NOVEMBER, 18, 20, 0, 0); // Why 20 if you want an hour of 0?
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
format.setTimeZone(zone);
String text = format.format(cal.getTime());
日期
对象与创建它的日历
对象的时区
没有关系。如果要在特定日历/时区中格式化,您应该使用DateFormat
…我必须在一个API中实现它,该API采用日历对象,但适用于不同的时区。那么我如何才能获得其他时区的日历引用。@TarunChaudhary:您的意思一点也不清楚,“实现它”是什么意思?您已经在不同的时区中有一个日历,但是您正在打印一个日期
,而该日期没有时区。日期
对象与创建它的日历
对象的时区
没有关系。如果要在特定的日历/时区中格式化,您应该使用DateFormat
…我必须在一个API中实现它,该API采用日历对象,但适用于不同的时区。那么我如何才能获得其他时区的日历引用。@TarunChaudhary:您的意思一点也不清楚,“实现它”是什么意思?您已经在不同的时区中有一个日历,但您正在打印一个日期,而该日期没有时区。IST和GMT的差异为6小时30分钟。如果我设置cal.set(calendar.HOUR,6);校准设置(日历分钟,30);那么只有我得到00:00:00。@TarunChaudhary:不,它是UTC+05:30。(在本次讨论中,GMT和UTC是等效的,但通常最好谈论UTC,以避免将事情与英国时区混淆,后者观察GMT达半年之久。)@TarunChaudhary:这是什么意思?现在还不清楚你想要达到什么目标,你实际上看到了什么。。。还有一个问题,就是你对IST的理解是1小时。IST和GMT之间有6小时30分钟的差异。如果我设置cal.set(Calendar.hour,6);校准设置(日历分钟,30);那么只有我得到00:00:00。@TarunChaudhary:不,它是UTC+05:30。(在本次讨论中,GMT和UTC是等效的,但通常最好谈论UTC,以避免将事情与英国时区混淆,后者观察GMT达半年之久。)@TarunChaudhary:这是什么意思?现在还不清楚你想要达到什么目标,你实际上看到了什么。。。在你理解IST的过程中,还有一个问题,那就是外出1小时。