java 时区问题 SimpleDateFormat 时区大全

好多年不写博客,今日偶上csdn,发现有位哥们发了我数条信息,只为谢我某篇博客帮了他项目的大忙。

年事已高锋芒不在的我,也再度有了一丝激情,希望写点能帮助到大家的东西吧。

这个java 的时区问题是我修复hive 的日期udf 中的问题发现的。


1. 为什么需要设置时区

说起java中的时间,大家或许都很熟悉,朗朗上口的Date、Calendar、SimpleDateFormat等。但是大家对他们的认识真的很深刻吗?今天我要想大家说的是TimeZone,即时区。

经常有人发现时间不对,比如相差8个小时等等,其真实原因便是TimeZone。只有正确合理的运用TimeZone,才能保证系统时间无论何时都是准确的。

影响TimeZone的因素:

1. 操作系统的时区设置。

2. 数据传输时时区设置。

第一个原因其实是根本原因,当数据在不同操作系统间流转时,就有可能因为操作系统的差异造成时间偏差,而JVM默认情况下获取的就是操作系统的时区设置。因此在项目中最好事先设置好时区

否则,可能导致比如下面的问题(不设置时区的时候得到的日期是UTC时间):


2. 如何设置时区

public static void main(String[] args) {
  SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd");
  try {
    System.out.println(f1.parse("2015-12-12"));
    f1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
    System.out.println(f1.parse("2015-12-12"));
  } catch (ParseException e) {
    e.printStackTrace();
  }
}
Sat Dec 12 08:00:00 CST 2015
Sat Dec 12 00:00:00 CST 2015

ps:中国的时区是东八区


3. 时区值大全

 {"ACT", "Australia/Darwin"},
 {"AET", "Australia/Sydney"},
 {"AGT", "America/Argentina/Buenos_Aires"},
 {"ART", "Africa/Cairo"},
 {"AST", "America/Anchorage"},
 {"BET", "America/Sao_Paulo"},
 {"BST", "Asia/Dhaka"},
 {"CAT", "Africa/Harare"},
 {"CNT", "America/St_Johns"},
 {"CST", "America/Chicago"},
 {"CTT", "Asia/Shanghai"},
 {"EAT", "Africa/Addis_Ababa"},
 {"ECT", "Europe/Paris"},
 {"EST", "America/New_York"},
 {"HST", "Pacific/Honolulu"},
 {"IET", "America/Indianapolis"},
 {"IST", "Asia/Calcutta"},
 {"JST", "Asia/Tokyo"},
 {"MIT", "Pacific/Apia"},
 {"MST", "America/Denver"},
 {"NET", "Asia/Yerevan"},
 {"NST", "Pacific/Auckland"},
 {"PLT", "Asia/Karachi"},
 {"PNT", "America/Phoenix"},
 {"PRT", "America/Puerto_Rico"},
 {"PST", "America/Los_Angeles"},
 {"SST", "Pacific/Guadalcanal"},
 {"VST", "Asia/Saigon"}


  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值