我Date使用了从数据库中检索a ResultSet rsExpid.
Date joindate = rsExpid.getDate("join_date_ad");
System.out.println(joindate);
int year = joindate.getYear();
System.out.println(year);
int month =joindate.getMonth();
System.out.println(month);
int day = joindate.getDay();
System.out.println(day);
dateTimeJoin4.setDate(year, month, day);
Run Code Online (Sandbox Code Playgroud)
当我打印joindate到控制台时,它显示正确2011-08-03,但当我打印year到控制台时,我很惊讶地看到111.同样印刷产生的月份7和当天产生的结果3.
变量dateTimeJoin4是我的SWT DateTime.它没有设置任何值,也没有给出任何错误消息.可以请任何人帮助我吗?
机会是你没有看过的文档Date.getYear和Date.getMonth:
返回一个值,该值是从包含或以此Date对象表示的时刻开始的年份减去1900的结果,如本地时区中所解释的那样.
和
返回一个数字,表示包含或以此Date对象表示的时刻开始的月份.返回的值介于0和11之间,值0表示1月.
分别.同样地Date.getDay返回星期几,而不是月份的那一天 - 你想要Date.getDate()的(或者最好是完全不同的API,Calendar或Joda Time).
这与SWT的DateTime类型无关- 毕竟,你只在最后一行使用它.当某些行为异常时,您的第一个停靠点应该是文档.DateTime.setDate据记载,SWT的方法要求在1752年至9999年间使用一年,因此111会使其混淆.不可否认,如果它抛出异常会很好,但即便如此......
您调用已弃用的方法的事实应该是对您的暗示,尽管它的月份Calendar 也使用0-11.
就个人而言,我强烈建议您尽可能多地使用Joda Time来完成日期和时间工作.这是一个远远优越的日期和时间API的一个内置到Java.这尚不清楚是否值得你在这里用它(如果这是所有你需要做的),但如果你正在做的任何事情都显著(包括分析,格式化或任何种类的算术),你应该使用它.
| 归档时间: |
|
| 查看次数: |
2343 次 |
| 最近记录: |