Java 将字符串转换为mm/dd/yyyy HH:mm HH mm区域格式的日期

Java 将字符串转换为mm/dd/yyyy HH:mm HH mm区域格式的日期,java,datetime,date-parsing,Java,Datetime,Date Parsing,我在字符串变量中有一个格式为07/18/2018 01:00-04:00 CDT的日期。 其中01:00-04:00是一个时间范围。 我需要将其转换为两个独立变量中的日期格式,同时牢记时区 Var1应具有2018年7月18日01:00 CDT Var2应具有2018年7月18日04:00 CDT 我应该标记这个字符串并将其分开01:00-04:00吗?或者simpleDateParser中有没有办法做到这一点?我有一个字符串变量格式为07/18/2018 01:00-04:00 CDT的日期 由

我在字符串变量中有一个格式为07/18/2018 01:00-04:00 CDT的日期。 其中01:00-04:00是一个时间范围。 我需要将其转换为两个独立变量中的日期格式,同时牢记时区

Var1应具有2018年7月18日01:00 CDT Var2应具有2018年7月18日04:00 CDT

我应该标记这个字符串并将其分开01:00-04:00吗?或者simpleDateParser中有没有办法做到这一点?

我有一个字符串变量格式为07/18/2018 01:00-04:00 CDT的日期

由于输入字符串不是标准的日期/时间格式,因此需要将字符串拆分为两个字符串,然后分别进行分析:

String input = "07/18/2018 01:00-04:00 CDT";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm z");

// parse 07/18/2018 01:00 CDT
ZonedDateTime first = ZonedDateTime.parse(input.replaceAll("-\\d{2}:\\d{2}", ""), formatter); 

// parse 07/18/2018 04:00 CDT
ZonedDateTime second = ZonedDateTime.parse(input.replaceAll("\\d{2}:\\d{2}-", ""), formatter); 

问题是你拥有的不是约会时间。这是一个间歇。datetime格式化程序无法处理此问题。格式化程序API生成一个
Date
对象(对于传统的
DateFormat
类)或一个
TemporalAccessor
对象(对于
DateTimeFormatter
)。当前或遗留Java日期/时间API中都不直接支持间隔

鉴于format/formatter类不能返回间隔,因此格式字符串不支持此1也就不足为奇了

因此,唯一的选择是自己进行一些解析/字符串攻击@Sun的答案是一个解决方案



1-例如,如果您可以编写一个格式/格式化程序模式,告诉解析器“忽略接下来的5个字符”,那么您可以创建两个不同的格式化程序来解析示例以提取第一个日期时间和第二个日期时间。但你不能。一个原因是这种方法不适用于格式化

不,你应该临时实现它。你能详细说明一下什么是临时吗?正如你所说的,拆分、concat和转换为java日期。是的,这也是我最初的想法。。。我试过SimpleDateParser,但不起作用。DateFormat格式化程序=新的SimpleDateFormat(“MM/dd/yyyy HH:MM HH:MM”);Date=formatter.parse(dateTested);结果显示日期为2018年7月18日星期三04:00:00,完全忘记了01:00左右。您的必需品不是标准的,因此在标准的librariesElegant解决方案中不存在。