Я показываю список потенциальных клиентов, используя таблицу данных внутри aura:component. Это таблица, которую я показываю: введите здесь описание изображения Я разрабатываю это приложение из Индии. И когда клиент открывает то же приложение из США, он получает вот такую ​​таблицу: введите здесь описание изображения

На изображении видно, что когда приложение открывается в США, из поля BirthDate__c вычитается один день, и это создает проблему. И когда я передаю дату другому компоненту ауры: я получаю правильную дату (дата отображается в Индии) в новом компоненте ауры:.

Это код, который я использую для отображения таблицы:

<lightning:datatable 
                keyField="id"
                data="{! v.records }"
                columns="{! v.columns }"
                onrowaction="{! c.handleViewDetails }"
                hideCheckboxColumn="true"/>

//controller code
    component.set('v.columns', [
            {label: 'Action', type:'button', typeAttributes: { label: { fieldName: 'Name'}, variant:'base'}},
            {label: 'Birth Date', fieldName: 'BirthDate__c', type: 'date', typeAttributes: { month: 'numeric', day: 'numeric', year: 'numeric'}},
            {label: 'Phone Number', fieldName: 'Phone', type: 'text'},
            {label: 'Email', fieldName: 'Email', type:'text'}
        ]);

И это код, который я использую для отправки данных в другую ауру: компонент

handleViewDetails : function(component, event, helper) {
    var row = event.getParam('row');
    var evt = $A.get("e.force:navigateToComponent");

    evt.setParams({
        componentDef: "healthfeed:ResourcesComponent",
        componentAttributes :{name: row.Name,
                              dateOfBirth: row.BirthDate__c}
    });
    evt.fire();
}

Итак, что я делаю неправильно здесь? как я могу отображать одну и ту же дату в Индии и США?

2
Jayesh Babu 25 Июн 2020 в 09:10
Это идеальная ситуация, есть большая разница в часовых поясах Индии и США. Тип «дата» отображает время в местном часовом поясе.
 – 
Rahul Gawale
25 Июн 2020 в 09:19
Ага. Я это понимаю. Мой вопрос: когда я передаю дату другому компоненту aura:, в данном случае ResourcesComponent, я получаю правильную дату. это почему? если это проблема с часовым поясом, дата, показанная в ResourcesComponent, также должна вычитаться за день, верно?
 – 
Jayesh Babu
25 Июн 2020 в 09:41
Как вы отображаете дату в компоненте ResourcesComponent?
 – 
Rahul Gawale
25 Июн 2020 в 09:44
<ui:outputDate value="{!v.dateOfBirth}"/>
 – 
Jayesh Babu
25 Июн 2020 в 09:48
1
Я починил это. Я добавил timeZone="UTC" к этой строке: {label: 'Birth Date', fieldName: 'BirthDate__c', type: 'date', typeAttributes: { month: 'numeric', day: 'numeric', year: 'numeric'}}, внутри typeAttributes
 – 
Jayesh Babu
25 Июн 2020 в 10:17

1 ответ

Лучший ответ

Проблема связана с ui:outputDate. Я думаю, что это показывает дату в UTC. Кроме того, он устарел с версии API 47.0.

Попробуйте использовать lightning:formattedDateTime вместо ui:outputDate.

С lightning:formattedDateTime вы можете использовать часовой пояс по умолчанию, который является часовым поясом среды выполнения. или вы можете переопределить значение по умолчанию, указав конкретный часовой пояс в атрибуте часового пояса.

<lightning:formattedDateTime value="1479944705000" timeZone="UTC" />

Если вы хотите отображать дату в часовом поясе пользователя, не устанавливайте никакое значение для атрибута timeZone. Если вы всегда хотите показывать дату в определенном часовом поясе, вы можете указать это с помощью атрибута timeZone.

Вы также можете установить часовой пояс в столбце таблицы данных внутри typeAttributes.

4
Rahul Gawale 25 Июн 2020 в 10:57
1
Я добавил timeZone="UTC" к typeAttributes, и это исправлено. большое спасибо.
 – 
Jayesh Babu
25 Июн 2020 в 10:23
Здорово!! Я думаю, вы уже поняли это, пока я печатал ответ!
 – 
Rahul Gawale
25 Июн 2020 в 10:25
Да .. я сделал. в любом случае большое спасибо за помощь.
 – 
Jayesh Babu
25 Июн 2020 в 10:27