我将 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);
最佳答案
月份是0-based ,因此您将日历设置为二月,而不是一月。这应该可以解决问题:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.MONTH, Calendar.JANUARY);
// ...
关于java - 将 SAS 日期值转换为 Java YYYY-MM-DD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30331178/