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

Convert server time zone to local time zone in Crystal Reports

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

我试过这段代码(但是没用)

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

我做错了什么?


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

1
ShiftDateTime (inputDateTime, inputTimeZone, newTimeZone)

Epicor server (the ERP I'm using) has 1 hour difference from my local time. My local time zone is UTC (Dublin, Edinburgh, Lisbon, London).

What I'm doing wrong?

您需要输入服务器时区。

看起来好像ShiftDateTime (cdate({BAQReportResult.LaborHed.ClockInTime}),"UTC,0","")输入并输出您当地的时间。

how to convert the Epicor server time zone to my local time zone.

由于您当地的时间是UTC / London,我假设服务器时间是UTC + 1。 inputTimeZone和newTimeZone的Crystal Reports语法是"std,offset"。

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

试试这个:

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

或者像这样明确地写出本地时区:

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

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

1
ShiftDateTime ( CurrentDateTime, PrintTimeZone, CurrentCEUserTimeZone)

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

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