salesforce - 无论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');
虽然我不确定这是否会根据方法运行的时间生成正确的格式日期。
解决方案
推荐阅读
- asp.net-core - VS2019如何配置ASP.NET Core和azure、netcoreapp3.1的连接字符串?
- ios - 如何签署框架?
- caching - Node-RED 中的缓存问题
- python - sum之前的numpy数组扩展
- javascript - 更改所有边框颜色
- angular - Firestore 列表仅显示更新的项目(Angular + Ionic)
- javascript - 为什么我使用 switch 的程序总是默认
- java - 实例化 Spring Bean
- docker - 如何在 docker 中使用 selenium 网格配置 jenkins?
- python - Scrapy CrawlSpider 爬行时的输出