java - 将 SAS 日期值转换为 Java YYYY-MM-DD

标签 java date datetime sas

我将 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/

相关文章:

java - 无法在 Google App Engine 上发送电子邮件

android - 如何根据语言环境显示日期格式?

java - 从我的日期变量中删除时间

python - 无法在Python中将字符串转换为日期

java - 如何在 Netbeans 中设置环境变量?

java - Java 上的垃圾问题太多

java - 即使在设置 channel 后,通知也不会在 android O 中显示

javascript - 日期代码在 JS 中不起作用

python - 类型错误 : must be string, 不是 strptime 的日期

Python 将具有特定时区的时间戳转换为 UTC 中的日期时间