zoukankan      html  css  js  c++  java
  • 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.重启服务

  • 相关阅读:
    jquery通过val()取不到textarea中的值
    form表单右边弹窗提示不能为空
    正则表达式
    layui表格的批量删除功能
    layui中table表格的操作列(删除,编辑)等按钮的操作
    layui动态渲染生成select的option值
    layui实现table表格的“关键字搜索”功能
    Python3基础 break while循环示例
    Python3基础 bool类型变量赋值
    Python3基础 assert 断言 确保程序的正确运行条件
  • 原文地址:https://www.cnblogs.com/ryhan/p/4934075.html
Copyright © 2011-2022 走看看