SimpleDateFormat 与时区

 

Date now=new Date();

//yyyy年MM月dd日 HH时mm分ss秒      HH为24小时  hh为12小时

//yy/MM/dd HH:mm

//yyyy-MM-dd HH:mm:ss    ==  now.toLocaleString();

格式可以自由组合,不受年月日 : 时分限制等限制 如下:

复制代码
1   try {
2             SimpleDateFormat format = new SimpleDateFormat("yyyy问你MM年dd HH?mm我ss");   //但不可有字母
3             Date date = format.parse("2014问你12年24 11?20我46");
4             SimpleDateFormat normalformat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
5             String dateStr =  normalformat.format(date);
6             System.out.println("dateStr=" +dateStr);
7         }catch (Exception e){
8             System.out.println("e.getMessage()=" +e.getMessage());
9         }
复制代码

 

复制代码
1         try {
2             SimpleDateFormat format = new SimpleDateFormat("yyyy(MM我dd HH?mm我ss");
3             Date date = format.parse("2014(12我24 11?20我46");
4             SimpleDateFormat normalformat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
5             String dateStr =  normalformat.format(date);
6             System.out.println("dateStr=" +dateStr);
7         }catch (Exception e){
8             System.out.println("e.getMessage()=" +e.getMessage());
9         }
复制代码

 

结果:dateStr=2014年12月24日 11:20:46

 

复制代码
 1    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒",Locale.ROOT);  //Local.root表示显示时间的格式按照系统上当地时间显示,还有Local.Chinese 等
 2     //在1989.4.11-1989.9.17期间id为GMT+08:00比id为Asia/Shanghai毫秒值多一个小时,其余时间段相等 修改方案:时区id改为:Asia/Shanghai
 3    dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));    //可以通过此芳芳设置当前时区为东八区,如不设置,默认是当前手机系统所指时区,GMT+08:00时区在
 4    String formatedTimeStr = dateFormat.format(now);   //得到当前时间的指定格式 
 8    Date date2 = dateFormat.parse("2017年11月18日 12时20分");  //解析出date对象获取毫秒值
10    date2.getTime(); //获取毫秒值
复制代码
复制代码
 1  try{
 2 
 3 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
 4 dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+08:00"));
 5 Log.i("test","str=" + dateFormat.getTimeZone().getID());
 6 Date date = dateFormat.parse("1989年4月11日 0时01分00秒");
 7 Log.i("test","str=" + date.getTime());
 8 
 9 SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
10 dateFormat2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
11 Log.i("test","str=" + dateFormat2.getTimeZone().getID());
12 // Date date2 = new Date("1989年5月31日0时1分0秒");
13 Date date2 = dateFormat2.parse("1989年4月11日 0时01分00秒"); //1989年9月18日
14 // String str2 = dateFormat2.format(date2);
15 Log.i("test","str=2=" + date2.getTime());
16 }catch (Exception e){
17 e.printStackTrace();
18 }
复制代码

 

时间毫秒值与时区

时间毫秒值 指的是0度经线的位置 从1970.1.1日0点0分0秒开始毫秒值

对于同一个毫秒值,世界各地(24个)时区东1-东12,西1-西12  各个时区对应时间不一样

向东每个时区逐+1小时,向西每个时区逐减1小时

例如:在0度经线对应2017.11.18 12时30分30秒,在东1区对应 2017.11.18 13时30分30秒,在西1区对应时间2017.11.18 11时30分30秒 ,以此类推

同一个时间,在各个时区,对应的毫秒值也不同 , 比如:2017.11.18 12时30分30秒, 东12区对应的毫秒值最小,西12区对应的毫秒值最大。

 

posted @ 2020-06-15 19:08  周紫妍  Views(4775)  Comments(0Edit  收藏  举报