将字符串 "2021-03-23T19:30:00+08:00" 转换为日期格式 dd-MM-yyyy

时间:2021-03-09 05:06:47

标签: java date

我正在尝试在 Java 编程中将字符串“2021-03-23T19:30:00+08:00”转换为简单格式的日期 dd-MM-yyyy。希望你们能给我任何关于java 8或更高版本的建议。

3 个答案:

答案 0 :(得分:1)

你的问题不是特别简单。

如果执行此操作的代码位于基里巴斯,其时区为 UTC+1400。你说的那个时间是 3 月 24 日。

那么,答案应该是 2021-03-242021-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);