Java 构造函数日期设置

标签 java date

如何使用构造函数设置日期?

    public Date(int day, int month, int year) 
   {

      this.day=day;         // set day to 1-31
      this.month=month;     // set month to 1-12
      this.year=year;       // set year to 1900-9999

   }

如果我使用

if(day<=1 || day >=31)
this.day=day;
else if(month<=1 || month>=12)
this.month=month;
else if(year<=1900 || year>=9999)
this.year=year

问题是,如果我这样做,它只会得到 0,但是如果我删除条件语句,则日期将接受到 32,月份将接受 13 以上,依此类推

最佳答案

好吧,你告诉我。你想要发生什么?以下是一些常见选项:

  1. (推荐):规定显然不存在的给定日期不是构造函数的合法调用。换句话说,new Date(32, 2, 2051) 无效。为此,请抛出异常。例如:

    if (day > 31) throw new IllegalArgumentException("Days must be between 1 and 31, inclusive");
    
  2. 使用滚动行为,并对年份进行四舍五入。这是一种“我不在乎,做某事没有意义,只是不要崩溃”的态度,并不推荐。例如,您可以将上述日期设置为 2051 年 3 月 4 日。

  3. 您选择的其他内容。毕竟,你是程序员。

请注意,您正在重新发明一个非常常见的轮子,因此,除非这是家庭作业或纯粹的学习练习(“纯粹”的意思是:一旦您完成了此代码,它就会被扔进垃圾箱),它是一个错误。使用LocalDate相反。

注意:日期很难。比你想象的要难。

关于Java 构造函数日期设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59480249/

相关文章:

java - Android 广告 - 以非常小的方形尺寸展示广告

php - 如何轻松确定生日的年龄? (php)

Javascript新日期函数为两个相似的函数调用生成不同的小时值

php - 每周两次约会 php

java - 最后一个工作日期非假期

java - 如何在结果集中追加数据?

java.lang.NullPointerException - 找不到 null 变量

java - 将多个整数数组输入到 arrayList 中,然后打印每个数组

JavaScript 的异或结果与 Java 的结果不同

git - 如何在我的提交中忽略提交时区信息?