【问题标题】:Take day of week from date从日期取星期几
【发布时间】:2018-06-09 12:57:54
【问题描述】:

我的程序有问题,我必须在其中插入一个随机日期 (dd/MM/yyyy),如果当天是星期五或星期六,它应该打印出“是聚会时间”。我插入星期五或星期六的日期,但它仍然打印出“你应该学习”。有人可以帮忙吗?

Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine();
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    LocalDate date = LocalDate.parse(input, formatter);
    System.out.println(date.getDayOfWeek().name());

    if (date.getDayOfWeek().equals("FRIDAY")) {
        System.out.println("Time for party, because it is: " + date.getDayOfWeek());
    }
    else if (date.getDayOfWeek().equals("SATURDAY"))
        System.out.println("Time for party, because it is: " + date.getDayOfWeek());
    else {
        System.out.println("You should study! It is: " + date.getDayOfWeek());
    }

【问题讨论】:

  • 09/06/2018 对我不起作用。

标签: java localdate


【解决方案1】:

LocalDate.getDayOfWeek 返回DayOfWeek 类型的枚举。但是您正在将字符串与枚举进行比较。

你必须这样做

date.getDayOfWeek() == DayOfWeek.FRIDAY

【讨论】:

    【解决方案2】:

    您应该将字符串值替换为枚举类型 DayOfWeek.FRIDAYDayOfWeek.SATURDAY。当您将字符串与枚举进行比较时。

    if (date.getDayOfWeek().equals(DayOfWeek.FRIDAY)) {
                    System.out.println("Time for party, because it is: " + date.getDayOfWeek());
                }
                else if (date.getDayOfWeek().equals(DayOfWeek.SATURDAY))
                    System.out.println("Time for party, because it is: " + date.getDayOfWeek());
                else {
                    System.out.println("You should study! It is: " + date.getDayOfWeek());
                }
    

    【讨论】:

    • 非常感谢!有效。有没有办法将“FRIDAY”打印为“Friday”?
    • String day = date.getDayOfWeek().toString().toLowerCase().substring(0,1).toUpperCase()+""+date.getDayOfWeek().toString().toLowerCase ().substring(1);
    • 是的,你可以在这里问。
    • 我的意思是,我可以在 Skype 上问你吗?
    • 对不起。我忘记了。
    【解决方案3】:

    您将DayOfWeek 实例与String 实例进行比较,因此它们永远不会相等,因为它们是不同的类型。

    一种解决方案是在调用 equals 之前调用 toString

    if (date.getDayOfWeek().toString().equals("FRIDAY")){...}
    

    或更好的使用:

    if (date.getDayOfWeek() == DayOfWeek.FRIDAY) {...}
    

    【讨论】:

    • 感谢您的评论。我使用 if (date.getDayOfWeek().equals(DayOfWeek.FRIDAY)) {...} 并且仍然有效。但是有什么方法可以将 FRIDAY 打印为 Friday?
    • 为什么不直接将打印语句更改为System.out.println("Time for party, because it is: Friday");,因为当控制进入if 语句时,您肯定知道它是星期五。对我来说似乎是最简单的解决方案......
    • @zaro 如果你需要Friday你可以做date.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.ENGLISH)
    • 我按照@Gaurav Srivastav 的方式做到了,尽管我是一个初学者,而且我不知道很多方法以及它们的实际作用。
    • @zaro 如果您想了解更多有关方法的信息,可以阅读documentation for DayOfWeek,包括getDisplayNamejava.time 的其他部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    相关资源
    最近更新 更多