我的目标是根据当地时间的简单日期范围查询计算潜在客户记录
Integer TotalLeads = [ Select Count() From Lead where createddate >= fromdate CreatedDate <= todate];
相当基本。但是,我遇到的问题是我只想计算“本地”时间而非UTC的线索; createddate是UTC中的潜在客户记录。
示例日期: 从:03/23/2017 致于:03/29/2017
对于这些样本日期和当地时间是UTC - 7(洛杉矶),所以我的查询将是
Integer TotalLeads = [ Select Count() From Lead where createddate >= 2017-03-23T07:00:00z AND CreatedDate <= 2017-03-30T06:59:59z];
如果这些是我的日期,我如何追加当地时间,所以从日期是2017-03-23T07:00:00z,到目前为2017-03-30T06:59:59z?
首先使用日期,我能够执行以下操作,但无法确定如何在当地时间保留它
// Date
date ds = date.valueof('2017-03-23');
string dm = string.valueOf( ds.month());
string dd = string.valueOf(ds.day());
string dy = string.valueOf(ds.year());
// DateTime Midnight (UTC)
String SDate = string.valueof(dm +'/' + dd + '/' + dy + ' 12:00 AM');
system.debug(SDate); // -> 3/23/2017 12:00 AM
// DateTime (Local Time)
datetime ds2 = datetime.parse(SDate );
system.debug(ds2); // -> 2017-03-23 07:00:00
system.debug(ds2.format('yyyy-MM-dd\'T\'hh:mm:ss'')); // -> 2017-03-23T12:00:00
正如您所看到的,使用ds2.format将其格式设置为我需要但返回UTC(午夜),我需要它为2017-03-23T07:00:00
有什么建议吗?
谢谢!
答案 0 :(得分:0)
想出我做错了什么。日期计算很好,它与传递给批处理作业的方式有关。