使用%f%s(我认为是Java 7格式化程序)类型表示法格式化日期
我正在使用Spring批处理将我的域对象输出到CSV文件。为此,我使用了使用%f%s(我认为是Java 7格式化程序)类型表示法格式化日期,java,spring,spring-batch,Java,Spring,Spring Batch,我正在使用Spring批处理将我的域对象输出到CSV文件。为此,我使用了FormatterLineAggregator。它使用%s%f类型格式 见下文 FormatterLineAggregator<MasterList> lineAggregator = new FormatterLineAggregator<>(); lineAggregator.setFormat("%s,%.2f,%.2f,%s,%s,%s,%s,%s,%s,%s,%s"); 我确实不熟悉%s%
FormatterLineAggregator
。它使用%s%f
类型格式
见下文
FormatterLineAggregator<MasterList> lineAggregator = new FormatterLineAggregator<>();
lineAggregator.setFormat("%s,%.2f,%.2f,%s,%s,%s,%s,%s,%s,%s,%s");
我确实不熟悉%s%f
符号
我希望该行末尾的日期看起来像dd/mm/yyyy hh24:mi:ss
,而不是yyy-mm-dd
我怎样才能用这个符号呢
还有人知道我在哪里可以找到更多解释语法的参考吗?类自Java 1.5.0以来就存在。
您可以使用以下格式设置日期格式
%te/%<tm/%<tY %<tT
'e' Day of month, formatted as two digits, i.e. 1 - 31.
'm' Month, formatted as two digits with leading zeros as necessary, i.e. 01 - 13
'Y' Year, formatted as at least four digits with leading zeros as necessary, e.g. 0092 equals 92 CE for the Gregorian calendar.
'T' Time formatted for the 24-hour clock as "%tH:%tM:%tS".
%te/%您的日期字段的类型是字符串还是日期?它是java.util.date我尝试了一下,得到了java.util.IllegalFormatConversionException:e!=java.util.Formatter$FormattSpecifier.failConversion(Formatter.java:4302)~[na:1.8.091]在java.util.Formatter$FormattSpecifier.printDateTime(Formatter.java:2835)~[na:1.8.091]在java.util.Formatter$FormattSpecifier.print(Formatter.java:2740)~[na:1.8.091]在java.util.Formatter.Formatter.java:2526)~[na:1.8.091]在java.util.Formatter.format(Formatter.java:2455)~[na:1.8.0\u 91]在java.lang.String.format(String.java:2981)~[na:1.8.0\u 91]上,我几乎可以使用参数索引。只有一个小问题。我在上面添加了一个编辑。请用ideone检查我的代码。d表示积分型。如果是整数,则结果将格式化为十进制整数。谢谢。为什么只对日期使用参数索引?不客气。我已经删除了索引。请看一看
%te/%<tm/%<tY %<tT
'e' Day of month, formatted as two digits, i.e. 1 - 31.
'm' Month, formatted as two digits with leading zeros as necessary, i.e. 01 - 13
'Y' Year, formatted as at least four digits with leading zeros as necessary, e.g. 0092 equals 92 CE for the Gregorian calendar.
'T' Time formatted for the 24-hour clock as "%tH:%tM:%tS".
StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb, Locale.US);
formatter.format("%s,%.2f,%.2f,%s,%s,%s,%s,%d,%s,%te/%<tm/%<tY %<tT,%te/%<tm/%<tY %<tT","A",11.2,12.3,"Country Road Shirt","Promotion Component Name A","wasnow","On Sale",100,"100 / 1000",new Date(),new Date());
System.out.println(sb);