Lee*_*fin 8 java timezone calendar date
以下两个日期在实践中有什么区别?
Date date = new Date();
Date date = Calendar.getInstance().getTime();
我的理解是新的Date()是基于UTC/GMT的日期,而日历的getTime()是基于TimeZone和系统时间.我对吗?我还想念一些东西吗?
而且,如果我的上述理解是正确的,我可以说以下两个函数的最终结果完全相同吗?
1.
public String getDate1(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//I set the time zone & pass the new Date()
sdf.setTimeZone(TimeZone.getDefault());
return sdf.format(new Date());
}
Run Code Online (Sandbox Code Playgroud)
2.
public String getDate2(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//I didn't set the time zone because I think calendar instance will handle timezone change
return sdf.format(Calendar.getInstance().getTime());
}
Run Code Online (Sandbox Code Playgroud)
如果你能指出我错误理解的地方并清楚地向我解释,我感激不尽.因为我觉得这件事让我很困惑.谢谢!
jim*_*gic 10
关于Java日历和日期的实用信息
如果要在Java程序中使用不同的日期,则将使用Java Calendar类.
我将尝试向您概述有关Java Calendar和Date类的未知广泛事实,工作代码示例,您可以立即尝试.
有关Calendar类的基本信息由Java API提供.Calendar类大约是几天,几个月和几年.有人可能会问:Date类不是一样的吗?不完全是...
Java Date和Calendar类有什么区别?
日期和日历之间的区别在于,日期类以特定的即时时间运行,日历以两个日期之间的差异运行.Calendar类使您可以在特定时刻和一组日历字段之间进行转换,例如HOUR,YEAR,MONTH,DAY_OF_MONTH.您还可以使用日历字段进行操作,例如获取祖母生日的日期:).
我想指出一些你应该知道的日历和日期,哪些不明显......
闰秒.
年,月,日和小时处于"正常"范围内,如:
一年y - 1900.一个月从0到11一个日期(日期)从1到31以通常的方式.日历闰秒小时0到23.以通常方式从0到59分钟.但是,注意!! 第二个由0到61之间的整数表示.看起来很奇怪 - 61秒,但不要忘记闰秒.每年或每两年大约有一次,称为"闰秒".闰秒总是作为当天的最后一秒添加,并且始终在12月31日或6月30日.例如,由于增加了闰秒,1995年的最后一分钟长61秒.
宽松的田野.
另一个有趣的功能是日历中的宽松和非宽松字段.那是什么?例:
实际上,如果你设置你的日历宽松,它将是2006年2月1日,你的程序没问题:).如果是非宽松的,则会抛出ArrayIndexOutOfBoundsException异常.
另一个问题是00:00结束或一天的开始?是00:00 AM还是PM?午夜和中午或下午?
答案:23:59是当天的最后一分钟,00:00是第二天的第一分钟.午夜属于"am",中午属于"pm",因此在同一天,凌晨12:00(午夜)<12:01 am,中午12:00(中午)<12:01 pm.
也许最后一个问题:什么是时代?以及为什么这个时代自1970年1月1日00:00:00.000 GMT.
实际上它是Unix时间或POSIX时间,是用于描述时间点的系统:它是1970年1月1日00:00:00 UTC之后的秒数.
等等,还有一个问题!
"如果我们使用自大纪元以来计算的时间,我怎么知道哪些年有闰秒,哪些不是?"
答:为了让生活更轻松,闰秒不计算在内.Java Date类占用OS的实际时间,大多数现代计算机都不能使用闰秒,它们的内部时钟不是那么精确.这就是为什么需要定期时间同步的原因.
这两个日期之间没有任何区别。(当然,第二个在分配您不使用的 Calendar 对象时有点浪费。)
java.util.Date 的实例是绝对时间点。它不了解时区。在 SimpleDateFormat 上设置默认时区同样不会执行任何操作,它使用默认值......默认!
为了尝试用不同的术语来解释, java.util.Date 为
世界标准时间 2013 年 12 月 19 日晚上 10:49
和
美国东部时间 2013 年 12 月 19 日下午 5:49
是完全相同的物体。完全相同的 java.util.Date 表示这两种人类可读的时间表示形式。仅当您使用格式化程序来回切换时,人类可读的考虑因素才会发挥作用。(因此,为什么您在格式化程序上设置时区,而不是在日期上设置时区,日期不知道时区的含义。)
| 归档时间: |
|
| 查看次数: |
18168 次 |
| 最近记录: |