首页
/ 在List-Formatting项目中自定义日期时间显示格式的技巧

在List-Formatting项目中自定义日期时间显示格式的技巧

2025-07-06 05:29:44作者:霍妲思

在SharePoint列表格式定制中,我们经常需要处理日期时间字段的显示格式。标准的toLocaleString()函数虽然方便,但有时输出的格式并不完全符合我们的需求,特别是当我们需要去除秒数但保留AM/PM标识时。

标准toLocaleString()的局限性

默认情况下,toLocaleString()函数会根据用户的区域设置输出完整的日期时间格式。对于英语(美国)区域设置,它通常会显示为"MM/DD/YYYY hh:mm:ss AM/PM"格式。但在实际业务场景中,秒数往往是不必要的显示信息。

解决方案:字符串截取与拼接

通过结合使用substring、lastIndexOf和indexOf等字符串操作函数,我们可以精确控制日期时间的显示格式。以下是实现这一需求的关键技术点:

  1. 去除秒数部分:使用lastIndexOf定位最后一个冒号的位置,然后用substring截取从开始到该位置之前的字符串。

  2. 保留AM/PM标识:通过定位最后一个空格的位置,截取从该位置到字符串末尾的部分。

  3. 安全拼接:使用indexOf加上一个特殊字符(如'^')作为终止标记,确保完整获取AM/PM部分而不会遗漏。

完整实现代码

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "txtContent": "=substring(toLocaleString([$Date]),0,lastIndexOf(toLocaleString([$Date]),':'))+substring(toLocaleString([$Date]),lastIndexOf(toLocaleString([$Date]),' '),indexOf(toLocaleString([$Date])+'^','^'))"
}

技术要点解析

  1. lastIndexOf函数:用于反向查找特定字符在字符串中的位置,这里用来定位时间部分中的最后一个冒号(秒数前的冒号)。

  2. substring函数:根据指定的开始和结束位置截取子字符串,这里用来分别截取时间部分(不含秒数)和AM/PM部分。

  3. indexOf技巧:通过添加一个特殊字符并查找它的位置,可以安全地获取到字符串的末尾位置。

应用场景

这种技术特别适用于以下场景:

  • 事件公告列表
  • 会议时间显示
  • 任何需要简洁时间显示的场合
  • 需要保持区域设置但自定义格式的情况

通过这种方法,我们既保留了区域设置带来的本地化优势,又能精确控制最终显示的时间格式,实现了灵活性与一致性的完美平衡。

登录后查看全文
热门项目推荐
相关项目推荐