JAVA学习15_Java 中与时间有关的几个问题

71 篇文章 0 订阅

1. Date
# 需要说明的是 Date 无时区,
# 但date.toString() 则是按当前 JVM 的默认时区来格式化的,也就是 TimeZone.getDefault() 获得的时区,
# 同时 date.toString() 是按照 "EEE MMM dd HH:mm:ss zzz yyyy" 来格式化的;

2. Date to String

Java代码   收藏代码
  1. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");  
  2. String strDate = format.format(date);  

3. String to Date
Java代码   收藏代码
  1. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  2. Date date = format.parse(strDate);  

4. 时区转换
Java代码   收藏代码
  1. String strDate = "2013-07-17 10:12:15";  
  2. String fromTimeZone = "GMT+8";  
  3. String toTimeZone = "GMT+0";  
  4.   
  5. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  6. format.setTimeZone(TimeZone.getTimeZone(fromTimeZone));  
  7. Date date = format.parse(strDate);  
  8. format.setTimeZone(TimeZone.getTimeZone(toTimeZone));  
  9. strDate = format.format(date);  
  10.   
  11. System.out.println(strDate);  

5. 区域问题 (不同的区域对时间的显示是不同的)
Java代码   收藏代码
  1. SimpleDateFormat format1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.SIMPLIFIED_CHINESE);  
  2. SimpleDateFormat format2 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);  
  3. System.out.println(format1.format(new Date())); // 星期三 七月 17 10:57:50 CST 2013  
  4. System.out.println(format2.format(new Date())); // Wed Jul 17 10:57:50 CST 2013  

6. 时间跳变
# 1582-10-04 的下一天是 1582-10-15
Java代码   收藏代码
  1. Calendar calendar = Calendar.getInstance();  
  2. calendar.set(Calendar.YEAR, 1582);  
  3. calendar.set(Calendar.MONTH, 9);  
  4. calendar.set(Calendar.DAY_OF_MONTH, 4);  
  5.   
  6. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
  7. System.out.println(format.format(calendar.getTime())); // 1582-10-04  
  8. calendar.add(Calendar.DAY_OF_MONTH, 1);                // 增加一天  
  9. System.out.println(format.format(calendar.getTime())); // 1582-10-15  
# 参见: http://dlc.sun.com.edgesuite.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/latest/html/zh_CN/api/java/util/GregorianCalendar.html

# 夏令时
Java代码   收藏代码
  1. Calendar calendar = Calendar.getInstance();  
  2. calendar.set(Calendar.YEAR, 1986);  
  3. calendar.set(Calendar.MONTH, 4);  
  4. calendar.set(Calendar.DAY_OF_MONTH, 3);  
  5. calendar.set(Calendar.HOUR_OF_DAY, 23);  
  6.   
  7. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  8. System.out.println(format.format(calendar.getTime())); // 1986-05-03 23:46:38  
  9. calendar.add(Calendar.HOUR_OF_DAY, 1);                 // 增加一个小时  
  10. System.out.println(format.format(calendar.getTime())); // 1986-05-04 01:46:38(中间跳过了 00:46:38)  
# 参见: http://baike.baidu.com/view/100246.htm

7. 设置 JVM 的时区
# 在JVM启动的时候,加入参数-Duser.timezone=GMT+08
# GMT, UTC 和 CST 时间的区别
# GMT 代表格林尼治标准时间;
# UTC 是比 GMT 更加精确的世界时间标准,在不需要精确到秒的情况下,通常也将GMT和UTC视作等同;
# CST 可以同时表示中国、美国、澳大利亚、古巴四个国家的标准时间;
# 参见:
# http://www.cnblogs.com/sanshi/archive/2009/08/28/1555717.html
# http://baike.baidu.com/view/42936.htm


原文来自:http://dyccsxg.iteye.com/blog/1908607

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值