如何修改Java代码实现将表格所有值(含日期)统一读取为字符串
修改方案
核心逻辑是调整所有赋值方法的规则,不管传入数字、日期、时间类型,都先转成字符串存入valueStr字段,你可以根据自身需要调整不同类型的字符串输出格式。
具体修改点
- 重写
setNumber、setDate、setDateTime方法,将传入的参数转为指定格式的字符串赋值给valueStr,不再置空该字段 - 不需要保留原始数字、日期类型取值能力的话,可以直接删除
valueNumber字段,以及getNumber、getDate、getDateTime三个方法,进一步简化代码 - 日期、时间转字符串的格式可以自定义,示例中用了常用的
yyyy-MM-dd和yyyy-MM-dd HH:mm:ss格式,你可以按需调整
修改后完整代码示例
import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; public class CellValue { public String valueStr; // 若不需要保留原始数字/日期值,可删除下面这行 public BigDecimal valueNumber; public String getString() { return valueStr; } public void setNull() { valueNumber = null; valueStr = null; } public void setString(String value) { valueStr = value; // 若不需要保留原始数字/日期值,可删除下面这行 valueNumber = null; } // 若不需要保留原始数字取值能力,可删除该方法 public BigDecimal getNumber() { return valueNumber; } public void setNumber(BigDecimal value) { // 数字转字符串,stripTrailingZeros用于去掉末尾无用的0,比如12.00转成12 valueStr = value.stripTrailingZeros().toPlainString(); // 若不需要保留原始数字/日期值,可删除下面这行 valueNumber = value; } // 若不需要保留原始日期取值能力,可删除该方法 public LocalDate getDate() { if (getNumber() == null) return null; return LocalDate.ofEpochDay(((long) getNumber().doubleValue()) - 25569); } public void setDate(LocalDate date) { // 自定义日期转字符串的格式 valueStr = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 若不需要保留原始数字/日期值,可删除下面这行 valueNumber = BigDecimal.valueOf(date.toEpochDay() + 25569); } // 若不需要保留原始时间取值能力,可删除该方法 public LocalDateTime getDateTime() { if (getNumber() == null) return null; return LocalDateTime.ofEpochSecond((long) (getNumber().doubleValue() - 25569) * 86400, 0, ZoneOffset.UTC); } public void setDateTime(LocalDateTime dateTime) { // 自定义时间转字符串的格式 valueStr = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 若不需要保留原始数字/日期值,可删除下面这行 valueNumber = BigDecimal.valueOf(dateTime.toEpochSecond(ZoneOffset.UTC) / 86400. + 25569); } }
修改完成后,不管你调用哪个set方法赋值,最后调用getString()就能拿到统一格式的字符串结果。
内容的提问来源于stack exchange,提问作者codeitforfuture
相关产品推荐
相关产品推荐

