如何将DateTime对象转换为英文文字格式日期?
将DateTime对象转换为英文文字格式日期
下面针对几种主流编程语言,给出具体的实现方案:
Python
Python的datetime模块没有直接生成带序数词(st/nd/rd/th)的日期格式,需要自定义逻辑处理序数词后缀:
from datetime import datetime def get_ordinal_suffix(day): # 处理11-13的特殊情况 if 11 <= day <= 13: return 'th' last_digit = day % 10 if last_digit == 1: return 'st' elif last_digit == 2: return 'nd' elif last_digit == 3: return 'rd' else: return 'th' # 示例DateTime对象 date = datetime(2000, 1, 30) # 组合格式 ordinal_suffix = get_ordinal_suffix(date.day) formatted_date = f"{date.strftime('%B')} {date.day}{ordinal_suffix}, {date.year}" print(formatted_date) # 输出:January 30th, 2000
C#
C#中可以通过ToString获取月份全称,再结合自定义函数生成序数词:
using System; using System.Globalization; public class DateFormatter { private static string GetOrdinalSuffix(int day) { if (day >= 11 && day <= 13) return "th"; return day % 10 switch { 1 => "st", 2 => "nd", 3 => "rd", _ => "th" }; } public static void Main() { DateTime date = new DateTime(2000, 1, 30); // 获取英文月份全称 string monthName = date.ToString("MMMM", CultureInfo.InvariantCulture); string ordinalSuffix = GetOrdinalSuffix(date.Day); string formattedDate = $"{monthName} {date.Day}{ordinalSuffix}, {date.Year}"; Console.WriteLine(formattedDate); // 输出:January 30th, 2000 } }
JavaScript
JavaScript的Date对象需注意月份是0-based索引,同时自定义序数词逻辑:
function getOrdinalSuffix(day) { if (day >= 11 && day <= 13) return 'th'; switch (day % 10) { case 1: return 'st'; case 2: return 'nd'; case 3: return 'rd'; default: return 'th'; } } // 示例Date对象(月份0代表1月) const date = new Date(2000, 0, 30); // 获取英文月份全称 const monthName = date.toLocaleString('en-US', { month: 'long' }); const ordinalSuffix = getOrdinalSuffix(date.getDate()); const formattedDate = `${monthName} ${date.getDate()}${ordinalSuffix}, ${date.getFullYear()}`; console.log(formattedDate); // 输出:January 30th, 2000
内容的提问来源于stack exchange,提问作者bluechair41
相关产品推荐
相关产品推荐

