Java 如何检查通过的日期,因为输入是否在UTC时区?

Java 如何检查通过的日期,因为输入是否在UTC时区?,java,Java,如何限制客户端只传递UTC时区日期?我希望客户只能以这种格式传递日期:yyyyMMddTHH:mm:ss.SSSZ,例如20130710T00:41:19.004+0000 如果客户通过的日期偏移量为20130710T00:41:19.004+0500,则我不接受此日期 这是我们的要求: 客户将调用我们的Web服务方法,客户将始终将日期转换为UTC时区,即20130710T00:41:19.004+0000,并传递给我们的Web服务方法。但无论如何,我们应该在我们这边有逻辑,如果任何情况下客户已

如何限制客户端只传递UTC时区日期?我希望客户只能以这种格式传递日期:yyyyMMddTHH:mm:ss.SSSZ,例如20130710T00:41:19.004+0000

如果客户通过的日期偏移量为20130710T00:41:19.004+0500,则我不接受此日期

这是我们的要求: 客户将调用我们的Web服务方法,客户将始终将日期转换为UTC时区,即20130710T00:41:19.004+0000,并传递给我们的Web服务方法。但无论如何,我们应该在我们这边有逻辑,如果任何情况下客户已经过了日期,如20130710T00:41:19.004+0500,我们不应该处理该请求

我尝试了SimpleDataFormat(yyyyMMddTHH:mm:ss.SSSZ)并尝试解析日期(20130710T00:41:19.004+0500),它没有引发任何异常。我希望它不会解析日期


是否有任何方法或api检查输入日期是否为上述格式(仅UTC格式)?

如果您希望输入字符串使用此格式(
yyyyMMddTHH:mm:ss.SSSZ
),假设格式设置且仅允许在UTC时区输入,只需检查字符串是否以
00
结尾,
+0000
-0000
,然后再将其传递给解析器。

您需要在此处提供更多详细信息。(1) 数据是如何“传递”的?(2) 为什么需要这种格式?(3)
yyyyMMddTHH:mm:ss.SSSZ
yyyyMMddTHH:mm:ss.SSS±zzzz
是否不同?是否需要简化格式。用你期望的格式创建一个,如果它抛出一个异常,那么你被赋予了一个错误格式的日期。但是为什么你需要这样的行为呢?如果用户给你偏移量,那么他实际上是给你UTC时间,因为你可以简单地找出用户给出的时间对应的UTC时间。请记住,Java中的日期不包含任何时区信息。那总是UTC。因此,如果给定一个带有时区偏移量的正确日期时间字符串,则通过SimpleDataFormat解析后的结果日期是“UTC”中的日期对象。感谢您的输入。这将是我们最后的选择。我在寻找类似于请求拦截验证程序(un/marsheller)应该失败的东西。听起来你并不是真的在寻找实际的验证操作(正如你的问题所暗示的),而是更一般地查询关于验证web服务输入的信息。如果不知道您使用的是哪种框架,很难回答。此外,正如@AdrianShum所说,禁止非UTC时区的时间输入没有什么意义。(日期/时间数据的最大问题是时区完全缺失,您必须猜测。在应用程序中,非UTC时区总是很容易转换为UTC。)