【发布时间】:2015-05-19 16:27:53
【问题描述】:
我将 SAS 日期对象存储为整数,它们看起来像:19725。
我正在尝试编写java代码将日期转换为YYYY-MM-DD
我在文档中看到 SAS 日期值是从 1960 年 1 月 1 日开始的天数
例如:
02 Jan 1960 将返回 1 2003 年 6 月 4 日将返回 15680
你能给出这个转换的java代码吗? IE。将 19725 之类的内容转换为日期格式:YYYY-MM-DD
我尝试下面的逻辑,但 15680 给出 2003-01-06 而不是 2003-06-04 作为输出。谁能指出错误。提前谢谢。
int numdays = 15680;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.MONTH, 1);
cal.set(Calendar.YEAR, 1960);
cal.add(Calendar.DAY_OF_MONTH, numdays);
String strdate = null;
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD");
if (cal != null) {
strdate = sdf.format(cal.getTime());
}
System.out.println(strdate);
【问题讨论】:
-
在 SAS 中,我知道 15680 实际上是 2002-12-06。执行
data _null_; x = 15680; put x e8601da.; run;将向您展示根据 SAS 应该是什么。 -
可运行演示:ideone.com/S6J0ba