java中date只是用来表示日期,一直认为和时区没有关系;实际使用中也没有遇到过问题,只要你不要getTime()对其进行设么操作。最近遇到想要把一个date归一化到天(天以下的单位全部设置为零,比如2012-1-1 8:32:22->2012-1-1 00:00:00),傻办法就是直接使用calendar.set(...),但是感觉很累,没有技术含量,于是深究了下timemillions.
好了, 首先看文档说话,Date.getTime() 的javadoc说“Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT
represented by this Date object.” 注意GMT是亮点,一旦出现时区事情总是变得有点复杂。
看了Date类代码,确认这货和calendar有关,那肯定和时区有关。。
打印 new Date(70, 0, 1).getTime() //1970-1-1,打印出-28800000,确认是8个小时毫秒数(亦即东八区,中国的时区),好了基本知道该怎么办了。
new Date(((new Date().getTime() + TimeZone.getDefault().getRawOffset()) / (1000 * 60 * 60 * 24)*(1000 * 60 * 60 * 24))
- TimeZone.getDefault().getRawOffset())
搞定,这就是我们需要的归一化后的日期(到1天),也就是当前天零点;同理,你也可以在此基础上归一化n月、n年。
注:上面可能会有夏令时的问题,中国么可以暂时忽略
分享到:
相关推荐
10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类...
java_sql_Date与java_util_Date转换
Java Date操作大全 例举了所有java 日期操作
java 使用Date类获取系统的当前时间 java 使用Date类获取系统的当前时间 java 使用Date类获取系统的当前时间
Java_Date_日期时间整理 1、获取服务器端当前日期:1、获取服务器端当前日期:按照指定格式打印日期
java Date操作工具类,对日期的各种基本的操作
Java 之 Date 和 Calendar 实例
在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。
Java中的date类的不同类型的时间格式化,如yyyy-MM-dd HH:mm:ss
java_时间戳与Date_相互转化 (2012-02-10 17:54:49) 转载▼ 标签: java 时间戳 date 转换 转化 杂谈 分类: java 1、时间戳的定义 时间戳是指文件属性里的创建、修改、访问时间。 数字时间戳技术是数字签名...
date工具类
java操作date对象的例子,教你如何获取时间
java中Date的格式.pdf
类型转换 ( Java.util.date与java.sql.date区别和转换
java 时间转换 date time = new date() 对时间的格式化。这个可以帮助大家解决时间的问题
date 格式 如System.out.printf("%tT\n",new Date()); // 18:51:28 (24小时时间)。。
Calendar 和 Date 类 是JAVA很重要的两个类,学好它们对于JAVA学习的道路非常重要
常用java date方法集合,对DATE类型操作的总结
java的Date类型转换成MySQL的DateTime类型.docx
java实现格式化Date类型,输入Date输出Date。遍历日期