我正在尝试在 Java 编程中将字符串“2021-03-23T19:30:00+08:00”转换为简单格式的日期 dd-MM-yyyy。希望你们能给我任何关于java 8或更高版本的建议。
答案 0 :(得分:1)
你的问题不是特别简单。
如果执行此操作的代码位于基里巴斯,其时区为 UTC+1400。你说的那个时间是 3 月 24 日。
那么,答案应该是 2021-03-24
或 2021-03-23
,还是“取决于您运行此代码的位置,是 24 日还是 23 日”?
最好首先使用 java.time
包中的类将您的字符串转换为它实际表示的内容:首先使用 DateTimeFormatter
来创建一个 ZonedDateTime
对象。然后,您可以将其放置在一个区域中,或者从中剥离该区域并将其转换为 LocalDateTime
,或者直接询问月份、日期和年份,然后使用 {{1 }},并再次使用 .format
来定义输出格式。
有了这些 API,无论您以何种方式关心“基里巴斯”问题的答案,都很容易。
答案 1 :(得分:-1)
Three Ways to Solve.
**Way-1**
---------
You have to parse the string to Date then format that Date
String date = "2021-03-23T19:30:00+08:00";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
DateFormat formatter1 = new SimpleDateFormat("dd-MM-yyyy");
System.out.println(formatter1.format(formatter.parse(date)));
you will get the output as
2012-12-01
**2nd Way**
--------
OffsetDateTime.parse( "2012-12-31T13:32:56.483+13:00" ).toLocalDate();
**3rd Way**
---------
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
Date date = dateFormat.parse("2017-04-26T20:55:00.000Z");//You will get date object relative to server/client timezone wherever it is parsed
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); //If you need time just put specific format for time like 'HH:mm:ss'
String dateStr = formatter.format(date);
答案 2 :(得分:-1)
希望,下面的代码可以帮助您解析日期时间:
BELOW Java_8
:
String string = "2021-03-23T19:30:00+08:00";
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"), Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date);
对于 Java_8
:
String string = "2021-03-23T19:30:00+08:00";
DateTimeFormatter currentPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
DateTimeFormatter toBeFormattedPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime datetime = LocalDateTime.parse(string, currentPattern);
String output = datetime.format(toBeFormattedPattern);