Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日历类和更改的时区冲突_Java_Date_Calendar - Fatal编程技术网

Java 日历类和更改的时区冲突

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

我希望将日期格式作为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, 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小时。