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

Pharo 11中如何将DateTime转换为指定格式的字符串?

在Pharo 11中自定义DateAndTime的字符串格式

当然可以,Pharo 11的DateAndTime类提供了多种方式生成自定义格式的时间字符串,以下是几种常用方案:

1. 用printStringUsing:快速生成(推荐)

通过格式化字符串指定输出样式,支持多种占位符:

  • %Y:四位年份
  • %m:两位月份(带前导零)
  • %d:两位日期(带前导零)
  • %H:24小时制两位小时
  • %M:两位分钟
  • %S:两位秒数
  • %I:12小时制两位小时
  • %p:大写AM/PM标记

示例代码:

"生成'2024/05/20 14:30:45'格式"
DateAndTime now printStringUsing: '%Y/%m/%d %H:%M:%S'

"生成'2024-05-20 PM02:30'格式"
DateAndTime now printStringUsing: '%Y-%m-%d %p%I:%M'

2. 用printOn:format:自定义细节

通过数组参数配置各部分格式与分隔符,数组结构为#(年格式 月格式 日格式 日期分隔符 时格式 分格式 秒格式),其中:

  • 1:带前导零的两位数字
  • 2:不带前导零的数字
  • 3:四位数字
  • 0:不输出对应部分

示例代码:

| currentTime |
currentTime := DateAndTime now.
"生成'2024-05-20 14:30'(不含秒数)"
String streamContents: [ :stream |
    currentTime printOn: stream format: #(3 1 1 $- 1 1 0) ]

3. 拆分时间部分手动拼接

直接提取年、月、日、时、分等独立部分,自由组合成需要的格式:

| dt dateStr timeStr |
dt := DateAndTime now.
dateStr := dt year asString, '年', 
           (dt month asString padded: true to: 2 with: $0), '月', 
           (dt dayOfMonth asString padded: true to: 2 with: $0), '日'.
timeStr := (dt hour asString padded: true to: 2 with: $0), ':', 
           (dt minute asString padded: true to: 2 with: $0).
dateStr, ' ', timeStr
"输出示例:'2024年05月20日 14:30'"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:55:27