【问题标题】:I have a date in int format DDMMYYYY, how can I separate day and month and year [closed]我有一个 int 格式的日期 DDMMYYYY,我如何分隔日月年 [关闭]
【发布时间】:2021-02-16 14:38:46
【问题描述】:
int date1 = 22092021
int date2 = 03122021

我想知道哪个日期更早 假设每个月有 30 天

【问题讨论】:

  • int date2 = 03122021 你会对这个感到惊讶,因为这是一个八进制数。换句话说,为什么要以这些整数开头?
  • 这个输入真的是整数还是字符串?
  • 例如 date1 = 22092021 表示 22 日 09 月 2021 年
  • 请注意:大多数人并不喜欢仅仅来到这里并放弃您的要求。为了获得更好的接收,请始终包括您自己的努力。我们帮助您解决问题,我们不会为您做所有繁重的工作。
  • @Edgero30 - 您应该将输入收集为 String 而不是 int

标签: java date datetime-format


【解决方案1】:

正如 cmets 中所指出的,输入很可能以字符串形式出现。您可以像这样轻松地从字符串中解析Date

private static Date getDate(String dateStr) throws ParseException {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("ddMMyyyy");
    return simpleDateFormat.parse(dateStr);
}

然后你可以做这样的事情来检查哪个日期更早:

String date1 = "22092021";
String date2 = "03122021";

Date d1 = getDate(date1);
Date d2 = getDate(date2);

if (d1.compareTo(d2) < 0) {
    System.out.println("d1 is older than d2");
} else if (d1.compareTo(d2) > 0) {
    System.out.println("d2 is older than d1");
} else {
    System.out.println("both are equal");
}

如果您有兴趣从 Date 实例中提取日、月和年,您可以创建一个小型实用程序方法将其转换为 Calendar,如下所示:

private static Calendar toCalendar(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal;
}

然后你可以用Calendar::get这样的方法提取它:

Calendar c1 = toCalendar(d1);
System.out.printf("%d %d %d\n", c1.get(Calendar.DAY_OF_MONTH), c1.get(Calendar.MONTH), c1.get(Calendar.YEAR));

Calendar c2 = toCalendar(d2);
System.out.printf("%d %d %d\n", c2.get(Calendar.DAY_OF_MONTH), c2.get(Calendar.MONTH), c2.get(Calendar.YEAR));

【讨论】:

  • 请不要教年轻人使用早已过时且臭名昭著的SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。
【解决方案2】:

除了这种表示的明显问题(参见 cmets)之外,还可以像这样分开部分:

int y = date % 10000
date /= 10000
int m = date % 100
int d = date / 100

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多