解析非标准日期格式,如““0yyyyMMdd”
我有日期,以 +0yyyyMMdd 格式进入我们的系统,
例如 2011 年 3 月 12 日是 +020110312
目前它肯定是 + 符号和 Date 之前的一个 0,但将来它可能会不止一个 0,例如 +000020110312
是否可以用标准 Java java.text.DateFormat.parse(String source) 解析它?
或者我应该编写自定义解析方法?
谢谢。
I Have Date, that comes to our system in format +0yyyyMMdd
For instance 12 March,2011 is +020110312
For now it's definitely + symbol and one 0 before Date, but in future it may be more than one zeros,e.g. +000020110312
Is it possible to parse it with standard Java java.text.DateFormat.parse(String source)?
Or I should write custom parsing method?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我猜 +0 是一个时区指示器,所以你可以尝试:
唉,这不会立即起作用。
为了使其正常工作,请获取从
0
到length - 8
的子字符串,并将其扩展为四位数字以满足时区的 RFC。请参阅 SimpleDateFormatI'd guess the +0 is a timezone indicator, so you can try:
Alas, this doesn't work immediately.
In order to make it work, get a substring from
0
tolength - 8
and expand it to be four digits to meet the RFC for the timezone. See SimpleDateFormat如果
+0
前缀是常量,则可以使用单引号引用它。(根据我的时区,结果是正确的)
请注意,月份由
MM
表示,而不是mm
。mm
代表分钟。使用mm
数月会破坏解析结果。另请参阅:
更新:由于将来似乎会有所不同“但将来可能会超过一个零”,因此您可以更好地考虑对最后 8 个字符进行子串。
If the
+0
prefix is a constant, then you can just quote it using singlequotes.(outcome is correct as per my timezone)
Note that months are represented by
MM
notmm
. Themm
represents minutes. Usingmm
for months would corrupt the parsing outcome.See also:
Update: since that seem to vary in the future "but in future it may be more than one zeros", you can better consider to substring the last 8 characters.
我将从您的表示中提取最后 8 个字符,然后解析它。 (我不确定你是否可以安全地避免它)
I would substring the last 8 chars from your representation and then parse it. (I am not sure if you can safely avoid it)
您可以使用 SimpleDateFormat 解析日期部分。
但您需要去掉“+000”前缀。
You could parse the date portion using SimpleDateFormat.
But you would need to strip off the "+000" prefix.