当前位置: 首页 > 面试题库 >

用Java程序将日期转换为序列号,就像在Excel中一样

张光辉
2023-03-14
问题内容

我已经编写了一个函数,但是它没有给出实际的O / P …

public int date(Object O) {
    if (O instanceof Date) {
        Date d1 = (Date) O;
        Calendar cal = Calendar.getInstance();
        cal.setTime(d1);
        int dd, mm, yy;
        dd = cal.get(Calendar.DAY_OF_MONTH);
        mm = cal.get(Calendar.MONTH);
        yy = cal.get(Calendar.YEAR);

        if (dd == 29 && mm == 02 && yy == 1900)
            return 60;

        long nSerialDate = ((1461 * (yy + 4800 + ((mm - 14) / 12))) / 4)
                + ((367 * (mm - 2 - 12 * ((mm - 14) / 12))) / 12)
                - ((3 * (((yy + 4900 + ((mm - 14) / 12)) / 100))) / 4) + dd
                - 2415019 - 32075;

        if (nSerialDate < 60) {
            // Because of the 29-02-1900 bug, any serial date
            // under 60 is one off... Compensate.
            nSerialDate--;
        }

        return (int) nSerialDate;
    }
    return -1;
}

主班

p s v main(String args[]){
CommonFunctionsImpl cmp= new CommonFunctionsImpl();
    Date date1 = null;
      try {
        date1 = new SimpleDateFormat("MM/dd/yy").parse("05/18/2008");

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    System.out.println("date-----"+cmp.date(date1));
}

输出量 date-----39556

在Excel中 DATE(2008,5,18) = 39586.00

我的程序O / P实际上与Excel O / P不匹配。


问题答案:

正确的算法已经在Apache
POI中实现。看一看org.apache.poi.ss.usermodel.DateUtil类。

此说明也可能有用:http :
//support.microsoft.com/kb/214094/en-
us



 类似资料:
  • 问题内容: 我在具有Excel Date序列号Date的csv文件中得到了名为DateOfBirth的列 例子: 当我在excel中格式化单元格时,这些将转换为 我需要在SSIS或SQL中进行此转换。如何做到这一点? 问题答案: 在SQL中:

  • 问题内容: 我需要将日期转换为Excel序列号,以用于编写的数据处理脚本。通过在OpenOffice Calc工作簿中使用日期,我可以推断出“ 1-Jan 1899 00:00:00”映射到数字零。 我编写了以下函数,以将python datetime对象转换为Excel序列号: 但是,当我尝试一些示例日期时,数字与在Excel(以及OpenOffice Calc)中将日期格式设置为数字时得到的数

  • 我试图检查JWT令牌的到期日,我所做的一切都没有给我正确的日期。 我试过那些libs,但没有成功... https://github.com/auth0/angular2-jwt/blob/master/src/jwthelper.service.ts 以下是完整的令牌: https://jwt.io/正在解码令牌,并且显示的exp正确。 如何从token获取真实日期。经验?

  • 问题内容: 我正在尝试将AEDT日期转换为dd / MM / yyyy HH:mm:ss z,但它给了我异常: 线程“主”中的异常java.text.ParseException:无法解析的日期:java.text.DateFormat.parse(DateFormat.java:337)的“ 2014年3月3日16:56:46 AEDT” 请在这件事上给予我帮助.... 我需要将用户时间转换为我

  • 本文向大家介绍在Java中将数组转换为列表的程序,包括了在Java中将数组转换为列表的程序的使用技巧和注意事项,需要的朋友参考一下 数组如下- 现在,使用Array.asList()将上面的数组转换为列表- 示例 以下是将数组转换为Java中的列表的程序- 输出结果

  • 问题内容: 我的json 响应 包含一个 CreatedOn 日期: 我需要将 CreatedOn 转换为简单的日期格式,并 计算从CreatedOn日期到当前日期的差异天数。 当我调试下面的代码字符串 CreatedOn时 显示一个空值。怎么会? 问题答案: 要么 考虑使用JSON方法而不是包含。JSON具有“ has()”,用于验证密钥是否存在。 您还应该确保首先尝试{}捕获{}字符串,以确保