因此,我有一种方法可以将一些对象列表写入CSV。
private void writeToCSV(List<Employee> empList) {
try(BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(System.getProperty("java.io.tmpdir")+"Test.csv"), "UTF-8"))) {
empList.forEach(eachEmployee -> {
StringBuilder builder = new StringBuilder();
builder.append(eachEmployee.getName());
builder.append(CSV_SEPARATOR);
builder.append(eachEmployee.getID());
builder.append(CSV_SEPARATOR);
builder.append(eachEmployee.getJoiningDate());
writer.write(builder.toString());
writer.newLine();
});
}
}
此处,该员工的入职日期为2019/03/20格式,即yyyy / MM / dd格式。而且我也应该以相同的格式将其写入CSV。 但是当我检查CSV时,它的格式为03/20/2019,即MM / dd / yyyy格式。 知道我哪里出问题了吗?
编辑:加入日期是一种字符串类型
答案 0 :(得分:0)
Locale
您的JVM当前的默认值Locale
可能在生成表示日期值的文本时被隐式应用。我只能猜测,因为您忽略了解释被调用方法的作用及其返回值的数据类型是什么。
同样,您的代码也使用了几年前被Jem 310取代的 java.time 类的具有缺陷的日期时间类。
最终的解决方案是在代码中采用 java.time 类。
并在将日期时间值序列化为文本时学习使用标准ISO 8601格式。对于YYYY-MM-DD格式的日期。生成/解析字符串时,默认情况下, java.time 类使用ISO 8601格式。