Spring DateFormatter &&CurrencyFormatter

  1.DateFormatter java.util.Date<---->String实现日期的格式化/解析

   

 //设置上下语言的语言环境
        LocaleContextHolder.setLocale(Locale.US);
        
        //--------测试日期格式化----------
        Date d = new Date();
        DateFormatter dateFormatter = new DateFormatter();
        //按中文格式输出日期
        System.out.println(dateFormatter.print(d, Locale.CHINESE));//2014-10-30    
        
        DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
        //添加前面的DateFormatter
        conversionService.addFormatter(dateFormatter);
        
        System.out.println(conversionService.convert(d, String.class));//Oct 30, 2014
        
        dateFormatter.setPattern("yyyy年MM月dd日");        
        System.out.println(conversionService.convert(d, String.class));//2014年10月30日

 

 

   2.CurrencyFormatter

    java.lang.BigDecimal<---->String实现货币样式的格式化/解析

      // --------测试货币格式化-------------
        CurrencyFormatter currencyFormatter = new CurrencyFormatter();
        BigDecimal money = new BigDecimal(1234567.890);
        System.out.println(currencyFormatter.print(money, Locale.CHINA));//¥1,234,567.89
        conversionService.addFormatter(currencyFormatter);
        System.out.println(conversionService.convert(money, String.class));//$1,234,567.89   

 

public class FormatterModel {
	@NumberFormat(style=Style.NUMBER, pattern="#,###")
	private int totalCount;
	@NumberFormat(style=Style.PERCENT)
	private double discount;
	@NumberFormat(style=Style.CURRENCY)
	private double sumMoney;
	
	@DateTimeFormat(iso=ISO.DATE) 
	private Date registerDate;
	
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 
	private Date orderDate;

    //省略getter/setter
}

@Number定义数字相关的解析/格式化元数据(通用样式、货币样式、百分数样式),参数如下:

    style用于指定样式类型,包括三种:Style.NUMBER(通用样式) Style.CURRENCY(货币样式) Style.PERCENT(百分数样式),默认Style.NUMBER

    pattern自定义样式,如patter="#,###"

 

@DateTimeFormat定义日期相关的解析/格式化元数据,参数如下:

    pattern指定解析/格式化字段数据的模式,如”yyyy-MM-dd HH:mm:ss”

iso指定解析/格式化字段数据的ISO模式,包括四种:ISO.NONE(不使用)  ISO.DATE(yyyy-MM-dd) ISO.TIME(hh:mm:ss.SSSZ)  ISO.DATE_TIME(yyyy-MM-dd hh:mm:ss.SSSZ),默认ISO.NONE

    style指定用于格式化的样式模式,默认“SS”,具体使用请参考Joda-Time类库的org.joda.time.format.DateTimeFormatforStylejavadoc

优先级: pattern 大于 iso 大于 style 

 

 

 

 

JavaDateFormatter类是一个用于格式化日期和时间的类。它可以将日期对象转换为指定格式的字符串,或将字符串解析为对应的日期对象。 DateFormatter类位于java.time.format包下,是Java 8及以后版本中引入的新日期时间API(java.time包)中的一部分。 使用DateFormatter类,需要先创建一个DateTimeFormatter对象,通过静态方法ofPattern()指定日期时间格式的模式字符串。然后,可以调用DateTimeFormatter的format()方法将日期对象格式化为字符串,或调用parse()方法将字符串解析为日期对象。 以下是一个简单的示例代码,展示了如何使用DateFormatter类: ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class DateFormatterExample { public static void main(String[] args) { // 创建日期格式化模式字符串 String pattern = "yyyy-MM-dd"; // 创建日期时间格式化器 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); // 获取当前日期 LocalDate currentDate = LocalDate.now(); // 将日期格式化为字符串 String formattedDate = formatter.format(currentDate); System.out.println("日期格式化后的字符串:" + formattedDate); // 将字符串解析为日期对象 LocalDate parsedDate = LocalDate.parse(formattedDate, formatter); System.out.println("字符串解析后的日期:" + parsedDate); } } ``` 以上代码中,首先创建了一个日期格式化模式字符串"yyyy-MM-dd",然后通过DateTimeFormatter类的ofPattern()方法创建了一个日期时间格式化器。 接着,获取了当前日期对象,并将其通过format()方法格式化为字符串,并通过parse()方法将此字符串解析为日期对象。在控制台输出中可以看到,字符串解析后的日期与原日期对象一致。 通过使用DateFormatter类,可以方便地将日期对象转换为指定格式的字符串,或将字符串解析为日期对象。这在处理日期时间相关的业务逻辑时非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值