【问题标题】:Need help parsing string date [duplicate]需要帮助解析字符串日期[重复]
【发布时间】:2021-01-24 01:34:17
【问题描述】:

到目前为止,我已经确定了第一个月,但我仍然需要有关日期和年份的帮助。我无法解析各个部分并将它们转换为整数。

int firstSlash = date.indexOf("/"); 月 = Integer.parseInt (date.substring (0, firstSlash));

这就是我目前所拥有的。

【问题讨论】:

标签: java


【解决方案1】:

简单的方法

有一个名为split() 的函数接受分隔符并返回一个字符串数组:

String[] words = date.split("/");
int month = Integer.parseInt(words[0]);
int day = Integer.parseInt(words[1]);
int year = Integer.parseInt(words[2]);

正确方法

在从字符串中解析日期时,首选方法是使用 Java DateFormat API:

DateFormat format = new SimpleDateFormat("MM/dd/yyyy");
Date theDate = format.parse(date);

Date 对象功能更强大,与日期和时间的交互比裸ints 更流畅

更多信息here!

【讨论】:

  • 我不同意。留给一个好的库比手动解析(拆分和解析单个整数)更容易。请不要教年轻人使用早已过时且臭名昭著的SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。
【解决方案2】:

如果您知道您的月、年和日在哪里,例如:25/10/2020,您可以使用拆分功能

如果您确定日期格式正确:

String[] dateSplit = date.split("/");
int day = Integer.valueOf(dateSplit[0]);
int month = Integer.valueOf(dateSplit[1]);
int year = Integer.valueOf(dateSplit[2]);
System.out.println("year" + year);
System.out.println("month" + month);
System.out.println("day" + day);

如果您不确定日期的格式是否正确:

String[] dateSplit = date.split("/");
if (dateSplit.length != 3) {
    throw new Exception("Date not in valid format");
    //or do something else like printing or whatever...
}

try {
    int day = Integer.valueOf(dateSplit[0]);
    int month = Integer.valueOf(dateSplit[1]);
    int year = Integer.valueOf(dateSplit[2]);
    System.out.println("year" + year);
    System.out.println("month" + month);
    System.out.println("day" + day);
} catch (NumberFormatException e) {
    throw new Exception("Date not in valid format");
    //or do something else like printing or whatever...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多