android 定义date对象,日期对象SimpleDateFormat在Java(Android)环境中无法正确解析时间戳字符串...

Joe..

15

尝试从格式字符串中删除小数秒.我刚遇到同样的问题,但格式略有不同.我的输入格式不是ISO格式(没有"T",没有"Z"),但症状是相同的 - 时间被一些随机数分钟和秒关闭,但其他一切都很好.这就是我的日志结果:

使用小数秒格式时:

SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");

# Parsed date: 2011-05-27 17:11:15.271816 => Fri May 27 17:15:46 EDT 2011

# Parsed date: 2011-05-27 17:09:37.750343 => Fri May 27 17:22:07 EDT 2011

# Parsed date: 2011-05-27 17:05:55.182921 => Fri May 27 17:08:57 EDT 2011

# Parsed date: 2011-05-27 16:55:05.69092 => Fri May 27 16:56:14 EDT 2011

# Parsed date: 2011-05-27 16:38:35.50348 => Fri May 27 16:39:25 EDT 2011

我通过从格式中删除小数秒来修复它.

SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

# Parsed date: 2011-05-27 17:11:15.271816 => Fri May 27 17:11:15 EDT 2011

# Parsed date: 2011-05-27 17:09:37.750343 => Fri May 27 17:09:37 EDT 2011

# Parsed date: 2011-05-27 17:05:55.182921 => Fri May 27 17:05:55 EDT 2011

# Parsed date: 2011-05-27 16:55:05.69092 => Fri May 27 16:55:05 EDT 2011

# Parsed date: 2011-05-27 16:38:35.50348 => Fri May 27 16:38:35 EDT 2011

我认为发生的是输入字符串的"小数秒"部分太长(在OP示例中也是如此).它似乎只期望三位小数.如果你做数学(拿第一个例子):

小秒数= 0.271816秒

DateFormat看到的是271816 / 1000秒

271816/1000 == 271秒

271/60 = 4分钟

271%60 = 31秒

17:11:15到17:15:46正好是4分31秒

是的,SimpleDateFormat无法处理微秒.最简单的方法是删除额外的3位数,例如date = date.substring(0,date.length() - 4)+"Z"; (2认同)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值