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

日期出现在JasperServer中编程的前一天

  •  3
  • Ramy  · 技术社区  · 15 年前

    我在JasperServer论坛上发布了这个,但是我在StackOverflow上运气更好。如果可以请帮忙。

    JasperServer 它的行为和 JasperReport iReport ).

    我现在看到的问题是,日期显示为输入参数的日期的前一天(实际上,正好是前4小时)。

    这是我在JRXML的默认值表达式中输入的内容:

     ((new Date().getMonth() / 3) + 1 == 1)? new Date(new Date().getYear(), 0, 1) :
    
    ((new Date().getMonth() / 3) + 1 == 2)? new Date(new Date().getYear(), 3, 1) :
    
    ((new Date().getMonth() / 3) + 1 == 3)? new Date(new Date().getYear(), 6, 1) :
    
    new Date(new Date().getYear(), 9, 1) 
    

    JasperReports . 当我把这件事做完的时候 ,我看没什么问题。对于我在本季度运行的任何报告,我都将2010年7月1日视为开始日期。

    JasperServer服务器 运行这个报告 JasperServer服务器 通过电子邮件将输出发送给我,我会得到不同的结果:

    2010年6月30日晚上8:00

    这对我来说像个虫子。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Gordon    15 年前

    看起来像是时区问题。

    您运行的服务器在哪里?

    你能查一下它的时区吗?

    Date date = ((new Date().getMonth() / 3) + 1 == 1) ? new Date(new Date().getYear(), 0, 1)
        :((new Date().getMonth() / 3) + 1 == 2) ? new Date(new Date().getYear(), 3, 1) 
        :((new Date().getMonth() / 3) + 1 == 3) ? new Date(new Date().getYear(), 6, 1) 
        :new Date(new Date().getYear(), 9, 1);
    System.out.println(date);
    

    输出:

    TimeZone.setDefault(TimeZone.getTimeZone("PST"));
    System.out.println(date);
    

    输出 2010年6月30日星期三16:00:00 PDT 日期相同。

    new Date(new Date().getYear(), 3, 1,23,59); 
    

    编辑:

    打电话给警察就行了 setTimeZone() 例如,在传递到报表之前在数据源上的方法

    mydatasource.setTimeZone(TimeZone.getTimeZone("BST"));

    推荐文章