这是一个简单的错误开始的:我使用的YYYY
不是对象的yyyy
格式字符串SimpleDateFormat
。但是我对使用格式错误的字符串的测试结果完全感到困惑。
这段代码:
@Test
public void whatTheHell() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/YYYY");
Date d1 = sdf.parse("01/07/2016");
Date d2 = sdf.parse("02/08/2016");
Date d3 = sdf.parse("11/29/2027");
System.out.println(d1.toString());
System.out.println(d2.toString());
System.out.println(d3.toString());
} catch (ParseException pe) {
fail("ParseException: " + pe.getMessage());
}
}
产生以下输出:
Sun Dec 27 00:00:00 PST 2015
Sun Dec 27 00:00:00 PST 2015
Sun Dec 27 00:00:00 PST 2026
我在这里阅读了有关’Y’参数的文档:https
:
//docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html,但是我仍然看不到在这里工作。特别是最后一种情况:我可以有点理解如何将1月(也许2月)的日期转换为上一年的12月,但是将11月29日的日期向后移动11个月会令我感到困惑。那么12月27日有什么特别之处?
谁能解释?
更多信息
@Jan建议依赖toString()方法可能是个问题,因此我定义了一种日期格式,以YYYY MM dd '-' yyyy MM dd
与上述相同的代码进行打印。这是其他输出:
2016 12 27 - 2015 12 27
2016 12 27 - 2015 12 27
2027 12 27 - 2026 12 27
很简单:2015年12月27日是2016年第1周的第1天(而2026年12月27日是2027年第1周的第1天)。可以通过添加以下行来验证:
SimpleDateFormat odf = new SimpleDateFormat("YYYY-ww-u");
System.out.println(odf.format(d1));
System.out.println(odf.format(d2));
System.out.println(odf.format(d3));
如果SimpleDateFormat
输出日期,则它可以使用所有字段:年,月,日,周几,月中的某周,年中的某周,周年等。
解析时,SimpleDateFormat
需要一组匹配的值:日,月,年 或
星期几,年中的某年,某年的某年。由于您提供的是星期几,但没有提供星期几和每年的某天,因此这些值的值假定为1。
实际值取决于您的区域设置:
(请参阅https://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html#week_and_year)
在我的系统上(使用de-ch语言环境,格式为“ EEE MMM dd HH:mm:ss zzz yyyy-YYYY-ww-u”)
Mo Jan 04 00:00:00 MEZ 2016-2016-01-1
Mo Jan 04 00:00:00 MEZ 2016-2016-01-1
Mo Jan 04 00:00:00 MEZ 2027-2027-01-1
这是一个简单的错误:我在对象的格式字符串中使用了而不是。但我完全困惑于我的测试结果与错误的格式字符串。 以下代码: @Jan建议依赖toString()方法可能会有问题,所以我定义了一个日期格式,以与上面相同的代码打印。下面是附加输出:
问题内容: 我玩了一段时间,发现了一些有趣的东西: 现在,错误显而易见了,将列表转换为元组就可以像开始时一样正常工作: 现在,我的问题是:为什么第 一个参数必须是str或str前缀的元组,而不是 str前缀 的列表 ? AFAIK,其Python代码可能如下所示: 但这让我更加困惑,因为即使记住了它,列表还是元组也应该没有任何区别。我想念什么? 问题答案: 从技术上讲,没有理由不接受其他序列类型。
> 铬: 硒 下面是我的日志文件:什么是开发工具问题?
好的,所以我做了一些关于常量以及它们应该如何设计和使用的研究。对于我的应用程序来说,有许多枚举可以将彼此相关的术语分组是有意义的。 其想法是,当我开发具有数百个参数(其中许多参数被多次使用)和方法的web服务时,我可以使用枚举的值进行注释。在此之前,有一个巨大、令人厌恶的常量文件,其中包含冗余和未维护的值。 所以,这里有一个枚举我想使用: 这里有一个地方我想用它: 因此,如果我尝试上面的方法,就会
问题内容: 我知道,但是他们不能真正关闭JDialog。当我使另一个线程停止时,JDialog的线程仍然运行。 而且我不能使用,因为其他线程需要运行一段时间。 遵循代码,我终于在程序末尾通过System.exit(0)解决了问题。 问题答案: 发送一个使用事件, 附录:应谨慎使用,在下面的示例中,第二个非守护线程正常完成,即使对话框在退出循环之前已关闭。有关详细信息,请参见JLS§12.8程序退出
我有一个eclipse rcp应用程序,它有时可能同时运行多个作业。也有一些情况下,其中一些作业可能需要暂停一段指定的时间。我在调用线程时注意到了这一点。sleep()可以做到这一点,但它似乎对其他工作也有一些不利影响。当我尝试与UI交互时,我甚至会在应用程序的标题上看到(没有响应)。我错误地认为每个作业实例都有自己的线程,但最近发现情况并非如此。在我脑海中,我唯一能想到的就是在每次创建作业时显式