代码之家  ›  专栏  ›  技术社区  ›  Bevor

计算Eclipse的Crystal Reports中的日期和不同的区域?

  •  1
  • Bevor  · 技术社区  · 14 年前

    我在使用Crystal Reports for Eclipse 2.0.4,但我遇到了一个问题。我在报告中使用公式从日期字符串中减去一天:

    ToText(CDate({Agreement.EndDate})-1, "dd.MM.yyyy");
    

    这适用于德国地区。对于英语语言环境,计算是绝对错误的,因为日期和月份是互换的。 例如: 当agreement.enddate为2010年5月7日,我从中减去一天,我得到2010年4月6日德语区域设置,而2010年7月4日英语区域设置。如何解决我在不同地区工作的问题?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Bevor    14 年前

    我找到了一个不那么干净的解决方案,但只要字符串始终采用相同的格式,它就可以工作:

    NumberVar day := Val(Mid({Agreement.EndDate}, 1, 2)); 
    NumberVar month := Val(Mid({Agreement.EndDate}, 4, 2));
    NumberVar year := Val(Mid({Agreement.EndDate}, 7, 4));
    Local DateVar enddate := Date(year, month, day);
    enddate;
    

    现在,您可以使用与区域设置无关的结束日期进行计算。 如果有人知道更好的解决方案,请告诉我。

    (顺便说一句:我无法更改服务器的区域设置)