当前位置: 首页 > 知识库问答 >
问题:

给出错误答案的日期格式

商绍元
2023-03-14

我使用下面的代码来格式化日期。但是当我以不正确的格式给出数据时,它会给出意想不到的结果。

DateFormat inputFormat = new SimpleDateFormat("yyyy/MM/dd");
DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd");`

String dateVal = "3/8/2016 12:00:00 AM";

try {
    Date date = inputFormat.parse(dateVal);
    String formattedVal = outputFormat.format(date);
    System.out.println("formattedVal : "+formattedVal);
} catch (ParseException pe) {
    throw pe;
}

在上述情况下,输出为-formattedVal:0009-02-05。

它不是抛出解析异常,而是解析值并给我一个不正确的输出。有人能帮我理解这种反常的行为吗。

共有3个答案

陈奇希
2023-03-14

阅读SimpleDateFormat的留档:

年份:。。。任何其他数字字符串,如一位字符串、三位或更多位字符串或并非全部数字的两位字符串(例如“-1”),都会按字面解释。因此,“01/02/3”或“01/02/003”被解析,使用与公元前3年1月2日相同的模式。同样,“01/02/-3”被解析为公元前4年1月2日。

齐琦
2023-03-14

SimpleDateFormat在内部使用一个Calendar对象。类有两种模式,宽大和严格。在宽大模式下,默认情况下,它接受不同字段的范围外值,并通过调整其他字段对这些值进行规范化,在您的情况下,将年字段向前推进约5手半。

尝试将日历实例设置为严格:

inputFormat.setLenient(false);

您真的应该使用java。时间类,如果Java 8不是选项,则使用JodaTime。

夏博
2023-03-14

日期解析器尽最大努力将给定字符串解析为日期。

这里3/8/2016被解析为格式年/月/日,所以:

  • 年份=3
  • 月份=8--

所以年份=35.5=8.50.667=9.17。这是2009年2月5日。

 类似资料:
  • 问题内容: 在该问题中,我引用了以下代码: 我在该问题中发现,该结果按model.classes_给出的顺序表示了属于每个类的点的概率 所以…如果正确解释,此答案表示该点可能是“橙色”(由于数据量很少,因此置信度较低)。但是直觉上,这个结果显然是不正确的,因为给出的点与“苹果”的训练数据相同。可以肯定的是,我也进行了相反的测试: 同样,显然是不正确的,但方向相反。 最后,我尝试了更远的点。 同样,

  • 我正在学习DOM,希望创建一个简单的JavaScript with Html测验(用于练习)。现在我遇到的问题是,当我点击提交时,所有的答案都是对的,而不是一个是对的,三个是错的。我认为这是我的html和我将ID分配给不同标签的方式的问题,但我不能弄清楚我做错了什么。 代码 多谢了。

  • 问题内容: 我创建了一些小的方法作为Util类,例如以下代码: 并且,进行了非常简单的运行,如下所示: 结果是一个很奇怪的日期-> 2017/07/187 搜索了类似的问题,并尝试了TimeZone,Locale,但没有帮助。有什么建议 ? 顺便说一句,这是我的环境: Windows7 x86 JDK 1.8.0.131 x86 Oxygen corrosion of x86 问题答案: 您格式化

  • 问题内容: 我计算出以下内容: 即使执行10.0-9.2也可以得到上述结果。为什么多余的7会出现在结果中? 我在python 3.2上。 问题答案: 浮点算法基于数字的二进制近似,因此存在一些内置问题。 有一个很好的解释在Python文档。 如果您需要更准确的答案,则可以签出该模块。

  • 问题内容: 我有一个简单的方法,应该获取当前日期,将其放入某种格式,然后将其作为String返回。到目前为止,一切都很好(上次尝试于1月31日进行),但由于某种原因,当我今天尝试使用它时,它返回字符串“2013-02-43”。 显然,二月份没有43天,而且我不知道为什么要返回此日期。我到处都在寻找解决方案,但似乎没有一个适合我遇到的特定问题。这是代码: 仅出于记录目的,我尝试使用Calendar.

  • 问题内容: 我有一个具有日期字段的类,该日期字段表示一条数据的“有效起始日期”。定义如下: 从我从数据库中提取日期并显示它的那一点似乎一切正常。如果我在前端选择日期2003年9月18日,那么当我检查数据库时要保存足够的日期,即保存日期(数据库为MySQL 5.5.9列类型为DATE)。但是,当我调出列表记录时,显示的日期是2003年9月17日-提前一天。 如果我选择年初或晚于2003年3月26日或