关于一个时间的转换问题。由一个RFC3339时间格式的字符串转为本地时间
2016-09-28 20:15
656 查看
RFC3339时间格式的字符串转为本地的时间
今天遇到了关于RFC3339类型的时间转换问题,在网上搜索了很多资料,发现并没有什么用处。主要是本质不正确。这个问题的解决方法要依赖于joda-time API,Joda-Time 令时间和日期值变得易于管理、操作和理解。事实上,易于使用是 Joda 的主要设计目标。其他目标包括可扩展性、完整的特性集以及对多种日历系统的支持。并且 Joda 与 JDK 是百分之百可互操作的,因此您无需替换所有 Java代码,只需要替换执行日期/时间计算的那部分代码。
在网上看到大多数人处理 String类型的 “2016-09-23T02:32:12.757016163Z” 的字符串用的都是SimpleDateFormat类型进行格式化,这样忽略的一个严重的问题,就是时区问题。Z代表的就是时区。
YYYY = four-digit year MM = two-digit month (01=January, etc.) DD = two-digit day of month (01 through 31) hh = two digits of hour (00 through 23) (am/pm NOT allowed) mm = two digits of minute (00 through 59) ss = two digits of second (00 through 59) s = one or more digits representing a decimal fraction of a second TZD = time zone designator (Z or +hh:mm or -hh:mm)
[align=center] SimpleDateFormat转换过来的时间基本都是错误的,要么是没有加时区,要么就是日期转换失败。用下边方法可以很好的解决这个问题。[/align]
首先引入需要的类:
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
若传入的是一个string类型的数据; 例如:String rcf3339DateString = “2016-09-23T02:32:12.757016163Z” ;
DateTime dateTime = new DateTime(rcf3339DateString);
Long result = dateTime.tocalendar(Locale.getDefault()).getTimeMillis(); 获取到这个时间对应的时间戳;需要什么格式的时间 使用result去转换就可以了。
若是想要将一个long类型的时间戳转换为rfc339格式的数据。可以进行以下操作。
long time = 123123123123123;
DateTime dateTime = new DateTime(time,DateTimezone.UTC) ; 第一个参数是需要转化的时间戳,第二个参数是要转化为对应时区的时间。
dateTime.toString(); 即为对应时间戳的rfc339格式的时间。
[align=center]
[/align]
或者只处理“ 2016-09-26T02:37:23.753333Z” 格式的可以使用joda-time的ISODateTimeFormat.dateTime().parseDateTime(timestr).toDate();
相关文章推荐
- 关于将一个字符串转换为整数的问题
- 关于字符串时间转换显示问题!
- 把一个中文日期时间格式字符串转为日期时间
- IOS将字符串转换为日期时间格式的一些问题
- 关于Web项目里的给表单验证控件添加结束时间不得小于开始时间的验证方法,日期转换和前台显示格式之间,还有JSON取日期数据格式转换成标准日期格式的问题
- 一个比较愚蠢的办法,解决excel表,关于导出时间类型转换成QString的问题
- Android 关于从后台获得时间的字符串转为日期格式再变成字符串
- 记录一个java.util.logging.Logger 使用中关于时间格式的问题
- VC中一个关于宏的使用问题,字符串之间转换,宽字符与普通字符
- 关于java将String类型的时间字符串转换为Date类型的问题
- 如何将一个格林威治字符串时间格式化转换为本地时间
- 【OpenGL】用OpenGL shader实现将YUV(YUV420,YV12)转RGB-(直接调用GPU实现,纯硬件方式,效率高) 这段时间一直在搞视频格式的转换问题,终于最近将一个图片的YUV
- 关于将一个字符串转换为整数的问题
- 关于oracle时间转换格式问题
- 获取本地时间时,关于时间的显示格式问题
- 验证一个字符串是否可以被转化为本地系统时间格式
- java中字符串转换成时间格式总结
- 把流中的字符串转换为 UTF 格式 - 回复 "lostapple" 的问题
- 关于动态数组、静态数组转换为字符串的一些问题 - 给 "厨师" 的回复
- 一个关于c++字符串处理和delete[]与delete差别的问题