如何在Salesforce Apex类中修改创建日期的输出显示格式
Apex 自定义日期显示格式实现方案
Apex 原生提供了DateTime.format()方法可以直接定制日期时间的输出格式,不需要手动拆分时间字段拼接字符串。
你当前直接拼接CreatedDate字段时,系统默认会输出ISO 8601标准的UTC时间字符串,也就是你看到的带T、Z标识的时间戳格式。要匹配你需要的邮件风格时间格式,直接传入对应格式模式串调用format方法即可,修改后的代码如下:
for(Integer i = 0; i < emailMessages.size(); i++){ DateTime createTime = emailMessages[i].CreatedDate; // 格式串匹配:星期缩写, 月份缩写 日期, 年份 at 12小时制时间 AM/PM String formattedTime = createTime.format('E, MMM d, yyyy \'at\' h:mm a'); replyBody += 'On ' + formattedTime + ' ' + emailMessages[i].From_Name__c + ' responded: '; }
注意事项
- 格式模式规则和Java SimpleDateFormat对齐:
E代表星期缩写、MMM代表月份缩写、d代表当月日期、yyyy代表四位年份、h代表12小时制小时、mm代表分钟、a代表AM/PM标识。 - 单参数的
format()方法会默认取当前登录用户的时区做时间转换,如果需要固定时区输出(比如统一按业务指定时区展示,避免不同用户看到的时间不一致),可以传入第二个IANA标准时区ID参数,例:createTime.format('E, MMM d, yyyy \'at\' h:mm a', 'Asia/Shanghai')就会固定按东八区时间格式化。 - 如果格式化后时间和预期差几个小时,优先检查时区参数是否符合业务要求,不要手动加减时间戳做偏移,避免夏令时等场景出错。
调整后输出的内容就会匹配你预期的样式:
On Thu, Jun 30, 2022 at 4:26 PM Sarah Kat responded:
内容的提问来源于stack exchange,提问作者shwarma g
相关产品推荐
相关产品推荐

