Java SimpleDataFormat解析是减法而不是加法
我正在尝试将我得到的时间(CEST/CET)更改为GMT,以便将其存储在我的数据库中。但是当我将CEST中的日期解析为GMT时,不是减去2,而是加上2小时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
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是一个大陆/地区,如欧洲/巴黎
。