0

我正在开发一个从互联网获取日期的 Android 应用程序。我所拥有的是一个完整的日期格式,例如: 2020-06-13T16:21:15.239920+02:00。我想得到一个月中的哪一天(在这种情况下是13)。

4

6 回答 6

2

您的日期/时间字符串符合DateTimeFormatter.ISO_OFFSET_DATE_TIME. 您可以使用java.timeAPI 来获取月份中的日期,如下所示:

import java.time.OffsetDateTime;

public class Main {
    public static void main(String[] args) {
        String dateTimeStr = "2020-06-13T16:21:15.239920+02:00";
        OffsetDateTime odt = OffsetDateTime.parse(dateTimeStr);
        int day = odt.getDayOfMonth();
        System.out.println(day);
    }
}

输出:

13

如果您不能使用Java SE 8 日期和时间,请查看ThreeTenABP以及如何在 Android 项目中使用 ThreeTenABP

于 2020-06-13T15:03:48.393 回答
2

如果您至少使用 API 级别 26,那么您可以使用ZonedDateTime类,因为您的字符串使用该类可以理解的默认格式。

ZonedDateTime zdt = ZonedDateTime.parse("2020-06-13T16:21:15.239920+02:00");
int d = zdt.getDayOfMonth();

或者,如果格式是恒定的,只需使用方法substring()

String dd = "2020-06-13T16:21:15.239920+02:00".substring(8, 10);

如果格式不是恒定的,我建议使用正则表达式ZonedDateTime结合DateTimeFormatter

于 2020-06-13T15:05:47.890 回答
0
String str = "2020-06-13T16:21:15.239920+02:00";
String substr = "";

// prints the substring after index 7(8 includes) till index 9(10 excludes)
substr = str.substring(8, 10);
于 2020-06-13T15:00:23.977 回答
0

拆分字符串并提取数据总是一个坏主意,因为一旦日期、月份或日期字符串的任何部分发生更改,字符串将更改为其他值,并且字符串索引也会更改

所以使用DateTimeFormatter

import java.time.MonthDay;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;

public class SDF {

    public static void main(String[] args) {
        final TemporalAccessor parse = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSxxx")
                .parse("2020-06-13T16:21:15.239920+02:00");

        int dayOfMonth = MonthDay.from(parse).getDayOfMonth();
        System.out.println(dayOfMonth);
    }
}
于 2020-06-13T15:03:21.460 回答
0

getDayOfMonth()这个变量应该有一个可用的方法

private int parseDate(ZonedDateTime date) {
    int day = date.getDayOfMonth();
    return day;
}
于 2020-06-13T15:06:14.027 回答
0

您可以使用字符串拆分。只需将整个日期格式放入 String 中,然后创建一个新的字符串数组 String[] array= str.split("[-T]");,然后您就可以从array[2].

String str = "2020-06-13T16:21:15.239920+02:00";
String[] array= str.split("[-T]");

System.out.println("OUTPUT: " + array[2]);

输出: 13

于 2020-06-13T15:10:00.830 回答