You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby如何解析日期字符串并输出带th后缀的指定格式日期

问题描述

我有一个日期字符串'2020-02-10 8,00',需要将其转换为Monday, 10th of February格式。目前我已经通过Date.parse '2020-02-10 8,00'将字符串解析为日期对象,请问该如何实现所需的格式化效果?


解决方案

你可以按照运行环境选择以下两种实现方式:

1. Ruby on Rails 环境(无需额外依赖)

Rails内置的ActiveSupport已经提供了序数后缀生成方法,直接组合strftime格式化即可:

# 先解析得到日期对象
date = Date.parse('2020-02-10 8,00')
# 格式化输出
result = date.strftime("%A, #{date.day.ordinalize} of %B")

各参数说明:

  • %A:输出完整星期英文名称
  • %B:输出完整月份英文名称
  • ordinalize:自动为日期数字添加对应序数后缀(st/nd/rd/th),可自动适配11/12/13这类特殊规则的日期

2. 纯Ruby环境(无Rails依赖)

自行实现序数后缀逻辑,再拼接格式化结果即可:

# 实现序数后缀生成方法
def ordinalize(day)
  return "#{day}th" if [11,12,13].include?(day % 100)
  case day % 10
  when 1 then "#{day}st"
  when 2 then "#{day}nd"
  when 3 then "#{day}rd"
  else "#{day}th"
  end
end

# 解析并格式化
date = Date.parse('2020-02-10 8,00')
result = date.strftime("%A, #{ordinalize(date.day)} of %B")

两种方式最终输出结果均为Monday, 10th of February,符合需求。


内容的提问来源于stack exchange,提问作者mr_muscle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:36:05