转: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.重启服务

最新文章

  1. sublime Text 3 安装emmet
  2. Spark 资源池简介
  3. Volley的GET和POST方法
  4. MyEclipse+Mysql (一)
  5. jQuery 中 on 方法-----给未来元素添加事件
  6. <<海闻电子发票接口 ESB 封装 代码指示 文档>>
  7. 各种会义PPT
  8. day10_python学习笔记_chapter13_面向对象编程
  9. ACdreamoj1110(多重背包)
  10. git上传本地项目到github
  11. 购物车css样式效果
  12. tp系统常量定义
  13. NYOJ 题目12喷水装置(二)
  14. 【CSA72G】【XSY3316】rectangle 线段树 最小生成树
  15. 链表中倒数第k个节点(Java)
  16. sql server 锁与事务拨云见日(上)
  17. 加载样式TTFB waiting时间长
  18. centos6下jbd2进程占用大量IO处理
  19. JavaWeb学习篇--Filter过滤器
  20. C语言复习---获取矩阵的对角和

热门文章

  1. ArcGIS API for Javascript 图层切换渐变效果实现
  2. 【小梅哥SOPC学习笔记】sof与NIOS II的elf固件合并jic得到文件
  3. delphi sqlsever 实现存在则更新,不存在
  4. linux安装redis及phpredis环境配置
  5. MacOS安装使用Node.js
  6. Subway Pursuit (二分)(交互题)
  7. ItemContainerStyleSelector
  8. [ActionScript 3.0] 结合FMS实现简单视频录制
  9. UIEvent笔记
  10. Android来电、去电监听