【问题标题】:Format a date using the %f %s (I think Java 7 formatter) type notation使用 %f %s (我认为是 Java 7 格式化程序)类型表示法格式化日期
【发布时间】:2016-07-24 12:44:21
【问题描述】:

我正在使用 Spring Batch 将我的域对象输出到 CSV 文件。为此,我使用了FormatterLineAggregator。它使用%s %f 类型格式。

见下文。

FormatterLineAggregator<MasterList> lineAggregator = new FormatterLineAggregator<>();
lineAggregator.setFormat("%s,%.2f,%.2f,%s,%s,%s,%s,%s,%s,%s,%s");

此代码正在将我的对象格式化为 CSV 中的这一行。

A,100.00,100.00,Country Road Shirt,Promotion Component Name A,wasnow,On Sale,100,100 / 1000,2016-07-24,2016-07-24

我真的不熟悉%s %f 符号。

我希望该行末尾的日期看起来像 dd/mm/yyyy hh24:mi:ss,而不是 yyyy-mm-dd

我怎样才能使用这个符号来做到这一点?

还有谁知道我在哪里可以找到更多解释语法的参考资料?

【问题讨论】:

  • 您的日期字段的类型是字符串还是日期?
  • 这是一个 java.util.date

标签: java spring spring-batch


【解决方案1】:

Formatter 类从 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". 

这里我们按位置引用参数是使用 '

例子:

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);

输出:

A,11.20,12.30,Country Road Shirt,促销组件名称A,wasnow,On Sale, 100,100 / 1000,25/07/2016 11:10:47,25/07/2016 11:10:47

这是ideone中的代码

更多信息可以参考Java文档Formatter

【讨论】:

  • 我试过了,我得到 java.util.IllegalFormatConversionException: e != java.lang.String at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302) ~[na:1.8 .0_91] 在 java.util.Formatter$FormatSpecifier.printDateTime(Formatter.java:2835) ~[na:1.8.0_91] 在 java.util.Formatter$FormatSpecifier.print(Formatter.java:2740) ~[na:1.8 .0_91] 在 java.util.Formatter.format(Formatter.java:2526) ~[na:1.8.0_91] 在 java.util.Formatter.format(Formatter.java:2455) ~[na:1.8.0_91] 在java.lang.String.format(String.java:2981) ~[na:1.8.0_91]
  • 我刚刚让它与参数索引一起工作。只有一个小问题。我在上面添加了一个编辑。
  • 在 ideone 中检查我的代码。 d 为整型。如果它是整数,则结果被格式化为十进制整数。
  • 谢谢。为什么你只对日期使用参数索引?
  • 不客气。我已删除索引。请看一下
猜你喜欢
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多