首页 > 解决方案 > 无论salesforce中的时区如何,如何格式化日期时间

问题描述

我们在 apex 中使用日期时间对象的formatGMT()orformat()方法,它返回基于时区的格式化日期。虽然如果我们有一个静态日期应该做什么,例如需要格式化的出生日期,而不考虑当地时区。
在我使用的场景中DateTime.format(),印度用户的出生日期显示正确,但对于美国用户,在某些情况下会显示昨天的日期。在某些情况下,它可以正确转换。

例如。x 人的出生日期是 1995-09-20,它被格式化为 1995 年 9 月 20 日,而对于 y 人,当出生日期是 1990-05-16 时,同样的方法会生成一个格式化的日期 05/15/1990。
基本上格式化的日期应该是 dob 的精确副本,与时区无关。

方法:

private static String localeFormatDate (Date dateValue) {
    try{
        String format = String.isNotBlank (strDateFormat) ? strDateFormat: 'MM/dd/YYYY';
        Date myDate = Date.newInstance (dateValue.year(), dateValue.month(), dateValue.day()); 
        Time myTime = Time.newInstance(0, 0, 0, 0); 
        return DateTime.newInstanceGMT (myDate, myTime). format GMT (format);
    } catch (Exception ex){
        return null;
    }

}

此外,我还尝试将时区设置为亚洲/科伦坡,因为该时区的日期格式正确:

return DateTime.newInstanceGMT(myDate, myTime).format (format, 'Asia/Colombo');

虽然我不确定这是否会根据方法运行的时间生成正确的格式日期。

标签: salesforceapexsalesforce-lightning

解决方案


推荐阅读