Java 日期问题,不断恢复到 1935 表格 2035

标签 java date testing restrictions

我正在测试的应用程序有问题,该应用程序从用户那里获取多个日期参数,在测试时我注意到,如果我输入的日期在 2034 年或之前,一切正常,但一旦我从 21 开始/08/34 到 21/08/35 年份恢复为 1935,而不是 2035。

我正在使用 java.util.Date 类来存储输入的数据,有什么想法吗? Date 类是否存在任何可能导致此类问题的已知限制?

谢谢

最佳答案

我在 Lotus Notes Development 中遇到了同样的情况。我实际上认为这是理想的行为。
快捷方式 (34..35..70) 可能是一个时间跨度(过去 80 年),您可能希望在该时间段内使用该快捷方式。

即你说的是 70 年代,但指的是 1970 年,而不是 2070 年。如果你说的是 35 年代,你可能指的是 1935 年,因为离今天不远了。但是,如果您从 18 岁开始说话,您可能指的是 future ,因为它在 80 年的时间跨度之外,但在不久的将来。

它可能在某处定义,但这一切都只是一个假设。

如果您从用户那里获取日期,请确保您获取的是 YYYY 日期,这样就不会输入错误。

编辑
我的假设似乎是正确的:

public class Main{

public static void main(String[] args){

    String first = "August 22, 34";
    String second = "August 21, 34";
    try {
        Date date = new SimpleDateFormat("MMMM dd, yy",Locale.ENGLISH).parse(first);
        Date date2 = new SimpleDateFormat("MMMM dd, yy",Locale.ENGLISH).parse(second);
        System.out.println(date);
        System.out.println(date2);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}


}

输出在哪里:

Wed Aug 22 00:00:00 BST 1934
Mon Aug 21 00:00:00 BST 2034

关于Java 日期问题,不断恢复到 1935 表格 2035,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25422638/

相关文章:

Javascript 函数检查 JSON 对象上是否缺少日期

ios - 如何使用 Swift 将日期字段保存到 Firebase?

testing - 在 Controller 测试中使用响应数据

java - Cobertura 如何与 JUnit 一起工作?

laravel - 我如何在 laravel 中测试 back() 方法

java - 在 Java 8 中展开多个可选变量

Java 泛型 - 接受 <? 的方法不允许使用 T 类型的对象。延伸 T>

java - 将 jcalendar 日期转换为 XMLGregorianCalendar 获取 Null 值

java - 线程安全的循环缓冲区?

java - 不能从静态上下文中引用非静态变量