如何将存储日期的CharSequence变量转换为DD/MM/YYYY格式的Date类型
实现方案
方案1:Java 8及以上版本(推荐,线程安全)
Java 8引入的java.time包提供的时间API是线程安全的,且原生支持接收CharSequence类型参数做解析,不需要额外转成String类型,实现代码如下:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Locale; // 分别定义输入格式、输出格式的格式化器 DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd", Locale.ENGLISH); DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy", Locale.ENGLISH); // 直接解析CharSequence类型的输入日期 CharSequence startDate = "1998/10/05"; LocalDate date = LocalDate.parse(startDate, inputFormatter); // 输出目标格式的日期字符串 String targetDate = outputFormatter.format(date); // 执行后targetDate的值为 05/10/1998
方案2:Java 8以下版本兼容方案
如果运行环境不支持Java 8的新时间API,可以用SimpleDateFormat实现,注意该类非线程安全,多线程环境下不要设为全局静态变量:
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; CharSequence startDate = "1998/10/05"; SimpleDateFormat inputSdf = new SimpleDateFormat("yyyy/MM/dd", Locale.ENGLISH); SimpleDateFormat outputSdf = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH); // CharSequence需要先转成String再解析 Date date = inputSdf.parse(startDate.toString()); String targetDate = outputSdf.format(date);
注意事项
- 格式符大小写敏感:
yyyy代表4位年份,MM代表2位月份,dd代表2位日期,大小写错误会导致解析失败 - 实际使用时建议添加异常捕获逻辑,处理输入为空、格式不匹配等异常场景
内容的提问来源于stack exchange,提问作者MADHUSUDAN RATNALU
相关产品推荐
相关产品推荐

