gson日期转换问题

转:http://blog.csdn.net/liao_leo/article/details/44593095

今天遇到个很奇怪的问题,gson解析日期字符串,本地执行可以,服务器上执行就报错。

这种问题一般都跟环境相关,到gson源代码中看到了DateTypeDapter这个类,

private final DateFormat enUsFormat
      = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.US);
  private final DateFormat localFormat
      = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT);
  private final DateFormat iso8601Format = buildIso8601Format();

private static DateFormat buildIso8601Format() {
    DateFormat iso8601Format = new SimpleDateFormat("yyyy-MM-dd‘T‘HH:mm:ss‘Z‘", Locale.US);
    iso8601Format.setTimeZone(TimeZone.getTimeZone("UTC"));
    return iso8601Format;
  }

它有几种parse日期字符串的的DataFormat类,一个个尝试,如果不成功就报错。

2015-03-24 14:54:14我们的日期格式是这样,本地转没问题,服务器上转就报错。localFormat
和enUsFormat跟本地语言有关,它的一些格式化类都在这个localdata.jar里面,java会获取本机的语言,然后加载不同的类获取格式
化信息。我本地的是zh_CN,服务器上的是en_US,本地是能够转换2015-03-24
14:54:14这个,因为它的格式正好是yyyy-MM-dd这种,但是服务器上的Dataformat的partern是en_us,无法解析
2015-03-24
14:54:14,就报错了。

解决办法,修改linux的

1.修改/etc/sysconfig/i18n
英文版系统:
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

中文版系统:
LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"

2.source /etc/sysconfig/i18n

3.重启服务

时间: 2024-08-01 22:47:47

gson日期转换问题的相关文章

atitit.设计模式(1)--—职责链模式(chain of responsibility)最佳实践O7 日期转换

atitit.设计模式(1)---职责链模式(chain of responsibility)最佳实践O7 日期转换 1. 需求:::日期转换 1 2. 可以选择的模式: 表格模式,责任链模式 1 3. 调用代码 2 4. 责任链链的特性: 2 5. 模式结构 4 6. 职责链模式包含如下角色:Handler,ConcreteHandler: 具体处理者,HandlerChainUtil ,Client 4 7. 设置哈一个handler,,两个法:排序法,指定法 5 1. 指定法 5 2. 排

js实现类似php中strtotime函数和timetostr的日期转换/互换功能

<script type="text/javascript">   //日期(格式:yyyy-mm-dd H:i:s) ---转换为以秒为单位的unix时间轴(格式:xxxxxx) 方法一:   //摘取天上星:http://blog.csdn.net/zqtsx   function strtotime1(datetime){        var tmp_datetime = datetime.replace(/:/g,'-');        tmp_datetime

springMvc的日期转换之二

方式一:使用@InitBinder注解实现日期转换 前台页面: 后台打印: 方式二:处理多种日期格式类型之间的转换 采用方式:由于binder.registerCustomEditor(Date.class,需要传一个PropertiesEditor类型的参数); 所以我们可以自定义一个日期格式,继承PropertiesEditor类 package cn.happy.controller; import java.sql.Date; import java.text.ParseExceptio

Java日期格式化之将String类型的GMT,GST日期转换成Date类型

请尊重他人的劳动成果,转载请注明出处:Java日期格式化之将String类型的GMT,GST日期转换成Date类型 http://blog.csdn.net/fengyuzhengfan/article/details/40164721 在实际开发过程中经常会需要将Date类型的数据封装成XML或Json格式在网络上进行传输,另外在将Date类型的数据存到Sqlite数据库中后再取出来的时候只能获取String类型的日期了,这是因为SQLite是无类型的.这样不得不面对将String 类型的日期

日期转换

1.NSString日期转换成某种格式下的NSDate +(NSDateFormatter*)chineseDateFormatter { NSDateFormatter *dataformatter = [[NSDateFormatter alloc] init]; NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; [dataformatter setLocale:locale]; [da

Java日期转换SimpleDateFormat格式大全(转)

24小时制时间显示: public class Datetime { public static void main(String args[]){ java.util.Date current=new java.util.Date(); java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String c=sdf.format(current); System.ou

JavaScriptSerializer的日期转换方案

1.转换后过滤替换(通用) /// <summary> /// 日期转换 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string JsonDateTime(string str) {    str = Regex.Replace(str, @"\\/Date\((\d+)\)\\/

Struts2中Date日期转换的问题

今天跑程序的时候莫名其妙的出现了下面的一个异常: java.lang.NoSuchMethodException:com.ca.agent.model.mybatis.ApprovalInforCangra.setSubDate([Ljava.lang.String;) 这类异常信息在以前是处理过的,按照以前的思路在eclipse的调试模式下看看具体的情况,不过这次比较奇怪,根本没进入到对应的Action类中就抛出了此异常信息,进一步查找发现,在调用拦截器方法的时候就抛出了此异常信息,还有没有想

oracle 字符串与日期转换sql

常用sql语句: select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual;   //显示:08-11-07 13:22:42 select to_date('2005-12-25,13:25:59','yyyy-mm-dd,hh24:mi:ss') from dual; //显示:2005-12-25 13:25:59 获取系统时间: select sysdate from dual; 转换的格式: 表示year的:y  表示年的最后一位