使用 %f %s(我认为 Java 7 格式化程序)类型表示法格式化日期
Format a date using the %f %s (I think Java 7 formatter) type notation
我正在使用 Spring 批处理将我的域对象输出到 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
.
我如何使用此表示法来做到这一点?
还有谁知道我在哪里可以找到更多解释语法的参考资料?
Formatter class 从 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".
这里我们按位置引用参数是使用'<'('\u003c')标志,这会导致重新使用先前格式说明符的参数。
示例:
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,Promotion Component Name A,wasnow,On Sale, 100,100 / 1000,25/07/2016 11:10:47,25/07/2016 11:10:47
这是ideone
中的代码
更多信息可以参考Java文档Formatter
我正在使用 Spring 批处理将我的域对象输出到 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
.
我如何使用此表示法来做到这一点?
还有谁知道我在哪里可以找到更多解释语法的参考资料?
Formatter class 从 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".
这里我们按位置引用参数是使用'<'('\u003c')标志,这会导致重新使用先前格式说明符的参数。
示例:
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,Promotion Component Name A,wasnow,On Sale, 100,100 / 1000,25/07/2016 11:10:47,25/07/2016 11:10:47
这是ideone
中的代码更多信息可以参考Java文档Formatter