Flutter/Dart如何将字符串类型的日期转换为其他指定格式
日期格式转换实现方案
你的输入日期为DD/MM/YYYY格式字符串,目标输出为DD 英文月份缩写 YYYY格式,核心实现逻辑为「解析输入日期 -> 按目标规则格式化」,以下是主流编程语言的实现示例:
Python 实现
使用标准库datetime即可完成转换,无需额外依赖:
from datetime import datetime def convert_date(date_str: str) -> str: # 解析输入的DD/MM/YYYY格式字符串 date_obj = datetime.strptime(date_str, "%d/%m/%Y") # 按目标格式输出,%b对应英文月份缩写 return date_obj.strftime("%d %b %Y") # 测试用例 print(convert_date("25/04/2020")) # 输出:25 Apr 2020 print(convert_date("10/02/2020")) # 输出:10 Feb 2020 print(convert_date("27/11/2021")) # 输出:27 Nov 2021
JavaScript 实现
方案1:手动映射月份(性能更优)
function convertDate(dateStr) { const [day, month, year] = dateStr.split('/'); const monthAbbr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; return `${day} ${monthAbbr[+month - 1]} ${year}`; }
方案2:使用内置Date对象(适配多语言更方便)
function convertDate(dateStr) { const [day, month, year] = dateStr.split('/'); const date = new Date(year, +month - 1, day); return date.toLocaleDateString('en-US', { day: '2-digit', month: 'short', year: 'numeric' }); }
Java 实现
使用JDK8+自带的java.time时间库实现:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Locale; public class DateConverter { private static final DateTimeFormatter INPUT_FORMATTER = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private static final DateTimeFormatter OUTPUT_FORMATTER = DateTimeFormatter.ofPattern("dd MMM yyyy", Locale.ENGLISH); public static String convertDate(String dateStr) { LocalDate date = LocalDate.parse(dateStr, INPUT_FORMATTER); return date.format(OUTPUT_FORMATTER); } public static void main(String[] args) { System.out.println(convertDate("25/04/2020")); // 25 Apr 2020 System.out.println(convertDate("10/02/2020")); // 10 Feb 2020 System.out.println(convertDate("27/11/2021")); // 27 Nov 2021 } }
注意事项
- 部分语言的日期对象月份从0开始计数,解析时注意做减1处理,避免月份偏移错误
- 若需要非英文的月份缩写,仅需修改对应格式化方法的语言地区参数即可
- 大批量转换场景下建议提前初始化格式化对象,避免重复创建带来的性能损耗
内容的提问来源于stack exchange,提问作者MURALI KRISHNAN MT
相关产品推荐
相关产品推荐

