0

我遇到了一个问题,我必须根据英国(英格兰)时间生成报告,我今天 2013 年 7 月 9 日运行了一份报告,英国时间是上午 5:58,而在印度现在是上午 10:28文件生成应包括英国时间戳,但文件没有我正在使用的时间戳

String currDate = new SimpleDateFormat("MM-dd-yyyy-HH-mm").format(new Date());
System.out.println("ABC_0101-"+currDate);

请告知如何在文件戳中获取英国时间我是否遗漏了 24 小时格式的内容

4

1 回答 1

3

您只需要设置格式化程序的时区:

TimeZone london = TimeZone.getTimeZone("Europe/London");
SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy-HH-mm", Locale.UK);
format.setTimeZone(london);

System.out.println("ABC_0101-" + format.format(new Date()));

顺便说一句:

  • 这是一个非常奇怪的格式模式。如果它在您的控制之下,我会敦促您使用自然可排序的东西,例如yyyy-MM-ddTHHmmss
  • 我已明确使用英国语言​​环境来确保使用英国日期符号。在这种情况下,它可能无关紧要,但在其他情况下可能。
  • 你确定他们真的想要英国时区而不是 UTC 吗?由于夏令时转换,英国时区最终会出现一些模棱两可的值 - 使用 UTC 可能更有意义。
  • 如果您正在做大量的日期/时间工作,您应该考虑使用Joda Time,这是一个比其他更好的日期/时间库java.util.Date
于 2013-07-09T05:10:46.117 回答