在Crystal Reports中将服务器时区转换为本地时区

时间:2016-12-21 11:27:40

标签: crystal-reports timezone utc

我有一个时间字段(LaborHed.ClockInTime),它在Epicor服务器(我正在使用的ERP)与当地时间有1小时的差异。我当地的时区是UTC(都柏林,爱丁堡,里斯本,伦敦)。我不知道如何将Epicor服务器时区转换为我当地的时区。

我尝试了这段代码(但它不起作用)

  

ShiftDateTime(cdate({BAQReportResult.LaborHed.ClockInTime}),“UTC,0”,   “”)

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果是打印字段,请增加公式中的小时。否则,这将使用当前用户时区:

ShiftDateTime ( CurrentDateTime, PrintTimeZone, CurrentCEUserTimeZone)

要强制执行时区,例如英国夏令时,请使用以下内容:

ShiftDateTime (cdate({BAQReportResult.LaborHed.ClockInTime}),"UTC,0, BST", "")

答案 1 :(得分:1)

请参见Crystal Reports联机帮助中对ShiftDateTime的引用

plot(as.factor(chrs), comps2$X1.7, ylim = c(0,1), type = "l")

  

Epicor服务器(我正在使用的ERP)与本地时间相差1小时。我的当地时区是UTC(都柏林,爱丁堡,里斯本,伦敦)。

     

我做错了什么?

您需要输入服务器时区。

似乎ShiftDateTime (inputDateTime, inputTimeZone, newTimeZone) 输入和输出 您的本地时间。


  

如何将Epicor服务器时区转换为我的本地时区。

由于您的本地时间是UTC / London,所以我假设服务器时间是UTC + 1。 inputTimeZone newTimeZone 的Crystal Reports语法为“ std,offset”。

  • std =标准时区的字符串名称。
  • offset =标准时区的偏移量(以分钟为单位)(西为正)。

尝试

ShiftDateTime (cdate({BAQReportResult.LaborHed.ClockInTime}),"UTC,0", "")

,或像这样明确地编写本地时区:

ShiftDateTime (cdate({BAQReportResult.LaborHed.ClockInTime}), "UTC,-60", "")