为什么要实例化一个以-1为参数的Date?

Cof*_*fee 21 java datetime

我知道这可能是一个显而易见的问题,但我正在看这段代码:

private Date lastActivity = new Date(-1);
Run Code Online (Sandbox Code Playgroud)

我很好奇这是做什么的 - Date类有六个不同的构造函数,只有一个可以采用单个参数long,如下所示:

public Date(long date)
Run Code Online (Sandbox Code Playgroud)

哪一个:

分配Date对象并将其初始化以表示自标准基准时间(称为"epoch")以来的指定毫秒数,即1970年1月1日00:00:00 GMT.

那么-1只是一个占位符?我感谢任何提示或建议.

Op *_*kel 19

它是January 1, 1970, 00:00:00 GMT 零毫秒(负数是纪元开头后面的日期)


use*_*300 17

人们通常会这样做以获得"众所周知的"日期,可能用于验证或比较(所有"真实日期"都大于此),作为"标记对象"以指示日期真的未知/非法/待定但是你不想出于某种原因使用null,或者也许是为了单元测试.

好的,查找我称之为"标记值"的更合适的术语,我得到了标记值,标记值,跳闸值,流氓值,信号值或虚拟数据.在这里查看维基百科文章

  • @RobertHarvey这不是一个无效的值.这是1969年12月31日格林尼治标准时间23:59:59:9999 (10认同)
  • @Adel是的,这是一个虚假的约会,但是一个"众所周知的"假日期.:-)在许多示例中,您使用-1作为计数或索引来指示"未找到".(例如String.indexOf()).在该示例中,-1是众所周知的伪造位置. (2认同)
  • `Date(long)`构造函数不拒绝任何值.为什么`new Date(-1)`是一个"假"日期?根据它的实现方式,这可能意味着1毫秒_before_ 1970-01-01 00:00:00. (2认同)

Ste*_*n C 5

那么-1只是一个占位符?我感谢任何提示或建议.

可能不是通常使用术语占位符.(这是代表...或者为......其他东西占有一席之地.)

它更可能是表示用于计算目的的边界条件的值.在这种特殊情况下,变量名称lastActivity似乎意味着这一点.我认为这是确定"活动"的最新时间的某种算法的一部分......并且该Date(-1)对象将被视为"活动从未发生"的含义.他们也可以使用null或用一个标志来表示这个...但是使用"时髦"Date对象可能会略微简化算法的逻辑.

"哨兵价值"对于这个来说是一个很好的术语......但"标记值"并不是那么好,因为它实际上并没有标记任何东西.

(从某种意义上说,选择-1是任意的.它可以是任何值......只要它与算法可能遇到的时间点不对应.-1如果时间点总是如此,则使用是理想的在UNIX时代之后...... 1970年1月1日.但是,如果它可能需要处理历史日期,那么可能Long.MIN_VALUE会更好.无论哪种方式......在你的家庭作业中,这都可能没有实际意义.)