如何解决当我将列格式应用于“仅日期”日期列时,时间值也会显示
我有一个日期列,设置为仅显示日期(不是时间),名为 My Date Column
。
我应用了下面的列格式,实现了所需的行为:
- 如果列值为
more than 30 days in the future
,则将文本颜色设为green
并显示checkmark
图标 - 如果列值为
between today and 30 days in the future
,则将文本颜色设为red
并显示AlarmClock
图标 - 如果列值为
today or in the past
,则将文本颜色设为red
并显示Important
图标
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json","elmType": "div","style": {
"color": "=if([$My_x0020_Date_x0020_Column]>(@Now +2592000000),'green',if([$My_x0020_Date_x0020_Column]>@Now && [$My_x0020_Date_x0020_Column]< (@Now +2592000000),'Red','Red'))"
},"children": [
{
"elmType": "span","style": {
"display": "inline-block","padding": "0 10px 0 10px"
},"attributes": {
"iconName": "=if(Number([$My_x0020_Date_x0020_Column]) == 0,'',if([$My_x0020_Date_x0020_Column]>(@Now +2592000000),'checkmark','AlarmClock','Important'))"
}
},{
"elmType": "span","txtContent": "@currentField"
}
]
}
但是,当我更改最后一个 span
的列格式时:
{
"elmType": "span","txtContent": "@currentField"
}
为此:
{
"elmType": "span","txtContent": "=if(Number(@currentField) == 0,'N/A',@currentField)"
}
它产生以下内容:
为了澄清,它显示了这一点:
29/11/2021 23:00:00
什么时候应该显示:
29/11/2021
此外,日期值与 if()
语句中非日期时显示的值不同。在 @currentField
语句中包含 if()
的行为正在改变显示方式以及显示的日期。
问题
为什么时间值显示在 date only
列中,如何在保留所需条件列格式的同时防止这种情况发生?
编辑
基于 this answer,将 @currentField
包装在 =toLocaleDateString()
中似乎有效,即:
{
"elmType": "span",'=toLocaleDateString(@currentField)')"
}
但是,使用 toLocaleDateString()
有不良行为,如果我在列表项中输入 01/01/2021
作为日期,它会显示作为前端的 31/12/2020
。
我认为这是因为该方法以用户的本地时间输出值,(from the docs):
toLocaleDateString():返回仅日期日期部分的语言敏感表示"txtContent":"=toLocaleDateString(@Now)"
结果因用户的语言环境而异,但 en-us 看起来像 "2/5/2019"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。