Salesforce LWC学习(四十四) Datatable 显示日期类型的有趣点思考

这篇具有很好参考价值的文章主要介绍了Salesforce LWC学习(四十四) Datatable 显示日期类型的有趣点思考。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇参考:https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.reference_salesforce_modules

背景: 项目中经常用到datatable显示日期类型字段,并要求日期类型字段基于指定格式显示。这种是一个很常见的需求,而且demo很容易找到,无论是官方文档中还是网上。这里列一个简单的demo,因为apex只是获取数据比较简单,这里不做显示,只列出关键内容。

contactListSample.js

import { LightningElement, track,wire } from 'lwc';
import findContacts from '@salesforce/apex/ContactControllerForDay7.findContacts';

export default class ContactListSample extends LightningElement {

    @track contacts;
    @track errors;

    columns = [

      {
        type: "text",
        fieldName: "Name",
        label: "Contact Name"
      },
      {
        type: "date",
        fieldName: "CreatedDate",
        label: "Created Date",
        typeAttributes:{day:'numeric',month:'numeric',year:'numeric',
          hour:'2-digit',minute:'2-digit',hour12:true
        }
      }];


    @wire(findContacts)
  wiredContacts({data,error}) {
    if(data) {
        this.contacts = data;
        this.errors = undefined;
        console.log('execute success');
    } else if(error) {
        this.errors = error;
        this.contacts = undefined;
        console.log('execute failed');
    }
  }
}

contactListSample.html

<template>
    <lightning-datatable columns={columns} data={contacts} key-field="Id">
    </lightning-datatable>
</template>

效果显示:以指定格式显示。

Salesforce LWC学习(四十四) Datatable 显示日期类型的有趣点思考

问题:这里我们需要对日期类型显示进行一个思考。官方文档介绍,datatable针对日期类型的渲染,使用的是lightning-formatted-date-time进行解析。问题来了,当对日期进行解析时,使用的是salesforce中的user的 locale setting还是用户当前的地区的本地时区设置呢?曾几何时,因为官方的文档没太读懂以及英语不太好,有了一些误解,认为获取的是salesforce中的user setting的timezone,其实不然,官方的默认行为获取的是当前用户当前访问的电脑设置的本地时区的设置。我们可以看一下相关的截图。上个截图中显示时间是曾经我在中国区GMT+8的时间显示,现在我修改成 GMT-4 美国时间。

Salesforce LWC学习(四十四) Datatable 显示日期类型的有趣点思考

 上图的datatable还是没有变化。但是详情页却相差了12小时时差。

Salesforce LWC学习(四十四) Datatable 显示日期类型的有趣点思考

这种场景在实际的使用中很难存在,因为实际的user大部分场景应该和所在地保持一致,即salesforce的user setting所配置的locale以及timezone会和本地保持一致,但是有种特殊场景,比如call center在国外,倒班有时差,需要配合客户的时间,需要将自己的salesforce账户的时间配置转换成客户时区,那这里就会出现这样的问题了。那如何修复呢? salesforce给我们预留了功能,只需要传递一下当前用户的salesforce中配置的地址时区即可。我们修改一下js部分代码:

import { LightningElement, track,wire } from 'lwc';
import findContacts from '@salesforce/apex/ContactControllerForDay7.findContacts';
import timeZone from '@salesforce/i18n/timeZone';
export default class ContactListSample extends LightningElement {
    @track contacts;
    @track errors;

    columns = [

      {
        type: "text",
        fieldName: "Name",
        label: "Contact Name"
      },
      {
        type: "date",
        fieldName: "CreatedDate",
        label: "Created Date",
        typeAttributes:{day:'numeric',month:'numeric',year:'numeric',
          hour:'2-digit',minute:'2-digit',hour12:true,timeZone:timeZone
        }
      }];


    @wire(findContacts)
  wiredContacts({data,error}) {
        if(data) {
            this.contacts = data;
            this.errors = undefined;
            console.log('execute success');
        } else if(error) {
            this.errors = error;
            this.contacts = undefined;
            console.log('execute failed');
        }
    }
}

改动上述位置以后的结果显示:已经基于具体的salesforce中配置的timezone进行显示时间。

Salesforce LWC学习(四十四) Datatable 显示日期类型的有趣点思考

总结: 本篇实际使用场景可能仅适用于用户实际时区和配置时区不同的优化方案,大部分场景并不会有问题,篇中有错误欢迎指出,有不懂欢迎留言。文章来源地址https://www.toymoban.com/news/detail-442934.html

到了这里,关于Salesforce LWC学习(四十四) Datatable 显示日期类型的有趣点思考的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RabbitMQ面试题(四十四道)

    0什么是消息队列: 消息队列的优点: (1)解耦:将系统按照不同的业务功能拆分出来,消息生产者只管把消息发布到 MQ 中而不用管谁来取,消息消费者只管从 MQ 中取消息而不管是谁发布的。消息生产者和消费者都不知道对方的存在; (2)异步:主流程只需要完成业务的

    2024年03月13日
    浏览(39)
  • Android 项目必备(四十四)-->Android 实现悬浮窗

    悬浮窗是一种比较常见的需求。例如把视频通话界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情。 本文将讲解悬浮窗实现步骤、原理、实例代码等 1. WindowMananger 接口 Android 的界面绘制,都是通过 WindowMananger 的服务来实现的。那么,既然要实现一个能够在自身应

    2024年02月12日
    浏览(38)
  • swing快速入门(四十四)拖动、编辑JTree结点

    注释很详细,直接上代码 上一篇 新增内容(源码细节知识点巨多,建议细看) 1.设置JTree可编辑 2.使用JTree关联的数据模型实现节点的增删改 3.鼠标拖动节点事件设计及处理方法 4.手动刷新视图与自动刷新的方法区别 5.自定位节点视图方法 源码 : 演示效果:

    2024年01月19日
    浏览(34)
  • 【Unity】 HTFramework框架(四十四)【进阶篇】指令系统

    更新日期:2023年5月29日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 指令系统 为Unity动态修补程序、热更新等提供了另一种补充方案,我们可以将任意一段 指令代码 即时编译并执行(请放心,即时编译的性能开销极低),达到运行时随意修改程序功能的骚操作。

    2024年02月09日
    浏览(43)
  • 第四十四章 Unity 滑动条 (Slider) UI

    本章节我们介绍滑动条 (Slider),它允许用户通过拖动鼠标从预定范围中选择数值。首先,我们点击菜单栏“GameObject”-“UI”-“Slider”,调整其位置,最终效果如下   我们发现滑动条 (Slider)下面有三个子游戏对象Background,Fill Area和Handle Slide Area。他们分别代表了横条背景,以

    2024年02月13日
    浏览(86)
  • leetcode解题思路分析(一百四十四)1247 - 1253 题

    交换字符使得字符串相同 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 “x” 和 “y”,你需要通过「交换字符」的方式使这两个字符串相同。每次「交换字符」的时候,你都可以在两个字符串中各选一个字符进行交换。交换只能发生在两个不同的字符串之间,

    2024年02月16日
    浏览(40)
  • 【前端知识】React 基础巩固(四十四)——其他Hooks(useContext、useReducer、useCallback)

    在类组件开发时,我们通过 类名.contextType = MyContext 的方式,在类中获取context,多个Context或者在函数式组件中通过 MyContext.Consumer 方式共享context: 可以看到,当我们需要使用多个Context时,存在大量繁琐的嵌套代码;而Context Hook能够让我们通过Hook直接获取某个Context的值,如

    2024年02月14日
    浏览(47)
  • 【Android从零单排系列四十四】《聊一下Android数据权限permission》

    目录 前言 一.Android 数据权限基本介绍 二 Android 权限分类 三 Android 权限清单 四 Android 动态申请权限DEMO 小伙伴们,在前面的几篇文章中,我们谈到了Android开发中的几种数据存储方式及数据持久化,本文我们介绍下Android开发中的另一部分内容,权限管理。 在Android中,权限管

    2024年02月12日
    浏览(75)
  • SpringBoot系列(四十四):Tomcat与Undertow容器性能对比分析|超级详细,建议收藏

            Tomcat和Undertow都是非常流行的Java Web容器,它们都有自己的优缺点。但在实际项目中,我们如何选择最合适的容器呢?是选择老牌的Tomcat,还是选择后起之秀的Undertow?本篇文章将深入分析Tomcat和Undertow的性能表现,为大家揭秘最佳选择!无论你是Java开发者还是想深

    2023年04月21日
    浏览(46)
  • Django笔记四十四之Nginx+uWSGI部署Django以及Nginx负载均衡操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记四十四之Nginx+uWSGI部署Django以及Nginx负载均衡操作 这一篇笔记介绍如何使用 Nginx + uWSGI 来部署 Django。 上一篇笔记中有介绍直接使用 uWSGI 作为 web 服务器来部署 Django,这一篇笔记介绍如何使用 Nginx 来部署。 使用 Nginx 来部署相

    2024年02月05日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包