点滴-Java8的日期类

来源:互联网 发布:长寿 知乎 编辑:程序博客网 时间:2024/06/04 18:34

Java8的日期类不熟悉啊,几个小姿势记录一下。

1.LocalDate.now()不是享元

yqj2065要大量创建LocalDate对象,所以要自定义一个MyDate, public static final LocalDate today = LocalDate.now();

        LocalDate d1 =LocalDate.now();
        LocalDate d2 =LocalDate.now();
        System.out.println(d1==d2); // false,操蛋

2.BASIC_ISO_DATE

today.format(DateTimeFormatter.ISO_DATE)为字符串 "2015-11-21",要得到"20151121",可以

        String dateStr = date.format(DateTimeFormatter.ISO_DATE);//BASIC_ISO_DATE        String[] d = dateStr.split("-");        String yyyymmdd = "";        for (String s : d) {            yyyymmdd += s;        }        return yyyymmdd;
但是有现成的,today.format(DateTimeFormatter.BASIC_ISO_DATE)!尴尬

3.Period

Period中,天数只管天数。

        LocalDate from = MyDate.today;        LocalDate to = from.plusDays(50);//LocalDate.of(2016, 1, 10);        Period period = from.until(to);        System.out.println(from + "  " + to + "  " + period.getDays());
有大量文件如log20151121,yqj2065要循环找到[from,to]的文件,用下面的代码:

        LocalDate from = MyDate.today;        LocalDate to = LocalDate.of(2015, 11, 25);                  List<String> fileNames = new ArrayList<>();        while(from.isBefore(to.plusDays(1))){//to]            String fileName = "log" +from.format(DateTimeFormatter.BASIC_ISO_DATE);;            fileNames.add(fileName);            from = from.plusDays(1);        }        fileNames.stream().forEach((s) -> {            System.out.println(s);        });
log20151121
log20151122
log20151123
log20151124
log20151125

不知道有没有其他的方式。

4.java.sql.Date

拼接sql:
String sql = "select  * from xxx where "                + " pin= " + boxResult.getPin() + "  AND sn= " + boxResult.getSn()                + "  AND date= '" + boxResult.getDate() + "'";

PreparedStatement:
            String condition = "insert into  xxx(orderID,customerID,pin,sn,date,outDate) values(?,?,?,?,?,?)";            PreparedStatement ps = MySQLConn.conn.prepareStatement(condition);            ps.setString(1, order.getOrderID());            ps.setInt(2, order.getCustomer().getCustomerID());            ps.setInt(3, qrCode.getPin());            ps.setInt(4, qrCode.getSN());            ps.setDate(5, java.sql.Date.valueOf(qrCode.getDate()));            ps.setDate(6, java.sql.Date.valueOf(order.getOutDate()));
这个setDate(int parameterIndex, java.sql.Date x) 有点讨嫌。为什么不提供重载的setDate(int parameterIndex, LocalDate date) ?

5.java.util.Date

老代码会遇到java.util.Date,例如使用org.jdesktop.swingx.JXDatePicker时。java.util.Date的等价物为Instant,
Date date= new Date();LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();





1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 面试问特长没有怎么办 组织一个演讲 你怎么办 跑步把腿跑粗了怎么办 跑步跑出肌肉腿怎么办 班级聚会人不齐怎么办 如果我们分手了怎么办 幼儿园课上完了怎么办 第一次上台唱歌紧张怎么办 第一次当主持人紧张怎么办 主持的时候口吃怎么办 打官司公司改规章制度怎么办 怎么办生日派对比较好 考不过科目一怎么办 卫校毕业证丢了怎么办 不小心摔跤了怎么办 篮球打气口漏气怎么办 手机麦有回音怎么办 obs直播有杂音怎么办 耳机会有回音怎么办 眼睛看东西散光怎么办 一只眼睛红肿怎么办 幼儿精力不集中怎么办 孕妇照四维说头大怎么办 孕晚期贫血严重怎么办 孕期肚子胀气难受怎么办 结婚三月没怀孕怎么办 在小龙武校病了怎么办 地下厨房太闷热怎么办 菜刀刀背磨手怎么办 养热水鱼冬天怎么办 冬天没热水洗澡怎么办 饭店厨房太热怎么办 餐厅厨房太热怎么办 有人在超市大便怎么办 家里有神经病人怎么办 家有神经病人怎么办 拍拍贷恶意催收怎么办? 拍拍贷爆通讯录怎么办 拍拍贷还款不了怎么办 信用卡欠款收到律师函怎么办 练瑜伽拉伤肌肉怎么办