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);
});log20151121log20151122
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();
本文介绍了Java8中的日期类使用,包括LocalDate.now()不是享元对象,BASIC_ISO_DATE格式转换,Period处理日期间隔,以及java.sql.Date和java.util.Date的区别。
995

被折叠的 条评论
为什么被折叠?



