Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/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 SimpleDataFormat解析是减法而不是加法_Java_Date_Simpledateformat - Fatal编程技术网

Java SimpleDataFormat解析是减法而不是加法

Java SimpleDataFormat解析是减法而不是加法,java,date,simpledateformat,Java,Date,Simpledateformat,我正在尝试将我得到的时间(CEST/CET)更改为GMT,以便将其存储在我的数据库中。但是当我将CEST中的日期解析为GMT时,不是减去2,而是加上2小时 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); //My locale is CEST Date dateOfBooking = formatter.parse(bookedDate + " " + b

我正在尝试将我得到的时间(CEST/CET)更改为GMT,以便将其存储在我的数据库中。但是当我将CEST中的日期解析为GMT时,不是减去2,而是加上2小时

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); //My locale is CEST
Date dateOfBooking = formatter.parse(bookedDate + " " + bookedDateTime); //Here the time is 10:09

formatter.setTimeZone(TimeZone.getTimeZone("GMT")); // Timezone I need to store the date in
dateOfBooking = formatter.parse(bookedDate + " " + bookedDateTime); // Here the time is 12:09
DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
bookedDateTime = timeFormat.format(dateOfBooking);

有人能解释为什么吗?我试着将我的本地时区设置为不同的时区,但它总是以另一种方式工作,减法而不是加法,反之亦然

您再次将日期解析为GMT(当打印为CEST或您的区域设置时区时,将增加+2小时)

您实际需要的是将已解析的日期打印为GMT:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); //My locale is CEST
Date dateOfBooking = formatter.parse(bookedDate + " " + bookedDateTime); //Here the time is 10:09

DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
timeFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
bookedDateTime = timeFormat.format(dateOfBooking);
System.out.println(bookedDateTime);

基本上,您必须在用于创建时间字符串的时间格式中设置GMT时区,而不是用于解析的格式设置程序。您再次将日期解析为GMT。(当打印为CEST或您的语言环境时区时,将增加+2小时)

您实际需要的是将已解析的日期打印为GMT:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); //My locale is CEST
Date dateOfBooking = formatter.parse(bookedDate + " " + bookedDateTime); //Here the time is 10:09

DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
timeFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
bookedDateTime = timeFormat.format(dateOfBooking);
System.out.println(bookedDateTime);
基本上,您必须在用于创建时间字符串的时间格式中设置GMT区域,而不是用于解析的格式设置程序。

“CEST”不是区域设置,而是时区。语言环境决定了翻译工作日所使用的人类语言,以及逗号与句号等问题的文化规范。但语言环境是完全独立的,与时区无关。另一个问题:
CEST
不是真正的时区。A是一个大陆/地区,如
欧洲/巴黎
“CEST”不是一个地区,而是一个时区。语言环境决定了翻译工作日所使用的人类语言,以及逗号与句号等问题的文化规范。但语言环境是完全独立的,与时区无关。另一个问题:
CEST
不是真正的时区。A是一个大陆/地区,如
欧洲/巴黎