Java 格式化json日期

Java 格式化json日期,java,json,Java,Json,大家好 我正在将数据放到webservice上,但对于日期数据类型返回的JSON数据,我遇到了一些问题。基本上,后面的字符串如下所示: /Date(115497000000+0700)/ 如何用java将其格式化为dd/mm/yyyy 谢谢 如果你用谷歌搜索它,你会发现很多用Java解析它的实现 除此之外,您还可以使用此-- var date = eval(jsonDate.replace(/\/Date\((\d+)\)\//gi, "new Date($1)")); 我不知道我是否能帮你

大家好

我正在将数据放到webservice上,但对于日期数据类型返回的JSON数据,我遇到了一些问题。基本上,后面的字符串如下所示:

/Date(115497000000+0700)/

如何用java将其格式化为dd/mm/yyyy


谢谢

如果你用谷歌搜索它,你会发现很多用Java解析它的实现


除此之外,您还可以使用此--

var date = eval(jsonDate.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));

我不知道我是否能帮你。

似乎你正在尝试格式化.Net JSON日期字符串。但您是想使用Java还是JavaScript还不太清楚。假设您要使用Java,以下是您可以尝试的:

import java.util.TimeZone;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FormatDate 
{
    public static void main(String[] args) 
    {
        String date = "/Date(1154970000000+0700)/".replaceAll("/Date\\((-?\\d+).*$","$1");
        String zone = "/Date(1154970000000+0700)/".replaceAll("/Date\\(-?\\d+([+-].*?)\\)/$","$1");
        long ldate = Long.parseLong(date);
        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        System.out.println ("Local "+TimeZone.getDefault().getDisplayName()+" Date: "+df.format(new Date(ldate)));
        df.setTimeZone(TimeZone.getTimeZone("GMT"+zone));
        System.out.println ("Parsed Zone GMT"+zone+" Date: "+df.format(new Date(ldate)));
    }
}
我的计算机上的输出(时区东部标准时间):

如果您正在寻找Javascript解决方案,以下内容将有所帮助:

 <script type="text/javascript">
      var jsonDate = "/Date(1154970000000+0700)/";
      var date = eval(jsonDate.replace(/\/Date\((-?\d+).*/i, "new Date($1)"));
      var offset = date.getTimezoneOffset()*60*1000;//convert timezone offset to milliseconds
      offset += 7*3600*1000;//convert to actual time zone 
      date = new Date(date.getTime()+offset);
      var mm = date.getMonth() + 1;         
      if(mm<10) mm = '0'+mm;
      var dd = date.getDate();
      if(dd<10) dd = '0'+dd;
      var yyyy = date.getFullYear();
      var date_str = dd + '/' + mm + '/' + yyyy;
      document.write(date_str + " GMT+700");
 </script>
输出:

[Antarctica/Davis, Asia/Bangkok, Asia/Ho_Chi_Minh, Asia/Hovd, Asia/Jakarta, Asia
/Krasnoyarsk, Asia/Phnom_Penh, Asia/Pontianak, Asia/Saigon, Asia/Vientiane, Etc/
GMT-7, Indian/Christmas, VST]
更新:JavaScript Date.getTimezoneOffset()和Java TimeZone.getRawOffset()或TimeZone.getOffset(long ldate)方法之间有一个符号。JavaScript方法getTimezoneOffset()和Java方法getOffset()都考虑了本地时区DST引入的差异

   String[] ids = java.util.TimeZone.getAvailableIDs(1000*3600*7);
   System.out.println(java.util.Arrays.deepToString(ids));
[Antarctica/Davis, Asia/Bangkok, Asia/Ho_Chi_Minh, Asia/Hovd, Asia/Jakarta, Asia
/Krasnoyarsk, Asia/Phnom_Penh, Asia/Pontianak, Asia/Saigon, Asia/Vientiane, Etc/
GMT-7, Indian/Christmas, VST]