qq_29354645
青灯烛影
采纳率100%
2019-08-06 15:03

请教一下各位大佬,如何处理excel中时间格式数据,在代码获取的值为1899/12/31问题,谢谢!

10

excel模板中某列字段“起飞时间”为18:45:00,在进行导入数据时,后台获取的值居然是1899/12/31

excel导入模板:

图片说明

代码:

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • weixin_43914888 梓隽 2年前

    首先你解析excel数据时,起飞日期和时间不要用date类型接收,用String。然后能得到两个字符串,将两个字符串截取拼接后再转Date类型给你个代码示例:图片说明图片说明

    点赞 1 评论 复制链接分享
  • weixin_39267497 小小小小小小小阳 2年前

    excel设置日期列问文本格式,然后用string去接收填写的日期值,首先验证改值是否符合日期格式,然后再进行后续处理

    点赞 评论 复制链接分享
  • clmforever clmforever 2年前

    怎么说呢,我用php处理过,php有个phpexcel库就完美解决

    java的
    如果用Excel导入时间格式是43188.468333这种格式;

    public static Date getDate(int days)
    {
      Calendar c = Calendar.getInstance();
      c.set(1900, 0, 1);
      c.add(Calendar.DATE, days - 2);
      return c.getTime();
    }
    
    public static Date getTime(Date date, double ditNumber)
    {
      Calendar c = Calendar.getInstance();
      int mills = (int) (Math.round(ditNumber * 24 * 3600));
      int hour = mills / 3600;      int minute = (mills - hour * 3600) / 60;
      int second = mills - hour * 3600 - minute * 60;       c.setTime(date);
      c.set(Calendar.HOUR_OF_DAY, hour);
      c.set(Calendar.MINUTE, minute);
      c.set(Calendar.SECOND, second);
      return c.getTime();
    }
    
    public static void main(String[] args) throws java.lang.Exception
    {
      // SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
      // System.out.println(s.format(43188.468333)); Excel数字时间
      int days = 43188;
      double ditNumber = 0.468333;
      Date date =new DateConvert().getDate(days);
      Date dateTime = new DateConvert().getTime(date, ditNumber);
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      System.out.println(sdf.format(dateTime));             
      //输出:2018-03-29 11:14:24
    }
    

    希望能帮助到你哈~~

    点赞 评论 复制链接分享
  • yyjjttww yyjjttww 2年前

    设置单元格为string类型,再在代码里转换

    点赞 评论 复制链接分享
  • qq_38394249 ⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣ 2年前

    为什么不获取字符串,然后转换呢

    点赞 评论 复制链接分享
  • qq_18630487 真-酸辣土豆丝 2年前
    /**
     * 字符转日期
     * 
     * @param dateStr
     * @return
     */
    public static Date getDateByStr(String dateStr) {
        SimpleDateFormat formatter = null;
        if (dateStr == null) {
            return null;
        } else if (dateStr.length() == 7) {
            formatter = new SimpleDateFormat("yyyy-MM");
        } else if (dateStr.length() == 10) {
            formatter = new SimpleDateFormat("yyyy-MM-dd");
        } else if (dateStr.length() == 16) {
            formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        } else if (dateStr.length() == 19) {
            formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        } else if (dateStr.length() > 19) {
            dateStr = dateStr.substring(0, 19);
            formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        } else {
            return null;
        }
        try {
            return formatter.parse(dateStr);
        } catch (ParseException e) {
            log.error(e.getMessage(),e);
            return null;
        }
    }
    
    点赞 评论 复制链接分享
  • z_shuang_mislk 骑着蛤蟆追天鹅 2年前

    excel表格时间那一列设置成文本格式2019-08-06,代码里面用String类型

    点赞 评论 复制链接分享