- 浏览: 134050 次
- 性别:
- 来自: 北京
文章分类
最新评论
java2平台为我们提供了丰富的日期时间API。如java.util.Date;java.util.calendar;java.text.DateFormat等。那么它们之间有什么关系呢?
首先,java.util.Date代表一个时间点,其值为距公元1970年1月1日 00:00:00的毫秒数。所以它是没有时区和Locale概念的。java通过如下形式取得当前时间点:
Date now = new Date(); //这个时间点与本地系统的时区无关
而正因为其与时区的无关性,才使得我们的存储数据(时间)是一致的(时区一致性)。一般的我们将now存储于数据库中,当我们需要展现数据时,将now格式化成想要的格式,如:2009-11-19 14:12:23。而这个功能一般交由java.text.DateFormat来实现。例如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String snow = sdf.format(now); // 2009-11-19 14:12:23
我们发现snow是带时间(14:12:23)的字符串,我们不禁要问,该时间(14:12:23)是哪个时区的时间?默认情况下,SimpleDateFormat 取得本地系统的时区(我的时区为GMT+8北京),然后按照pattern("yyyy-MM-dd HH:mm:ss")格式化now,此时输出的就是GMT+8区的时间了。如果想支持国际化时间,则先指定时区,然后再格式化date数据。例如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
String snow = sdf.format(now); // 2009-11-19 14:12:23
另外,你可以通过如下代码修改本地时区信息:
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
java.util.Calendar类也代表时间点,但它为Date的facade工具类,提供了很多对时间点到年、月、日、时、分、秒、星期等的转换(计算)的方便方法。
Calendar calendar = Calendar.getInstance(timezone);
Date d = calendar.getTime();
Calendar 的计算也是基于时区的,例如:同一个date在不同时区下的小时数是不一样的。但是calendar.getTime();返回的date是没有时区的,因为它是Date类型的。例如:
public static void main(String[] args) throws InterruptedException {
Calendar calendar1 = Calendar
.getInstance(TimeZone.getTimeZone("GMT+8"));
Calendar calendar2 = Calendar
.getInstance(TimeZone.getTimeZone("GMT+1"));
System.out.println("Millis = " + calendar1.getTimeInMillis());
System.out.println("Millis = " + calendar2.getTimeInMillis());
System.out.println("hour = " + calendar1.get(Calendar.HOUR));
System.out.println("hour = " + calendar2.get(Calendar.HOUR));
System.out.println("date = " + calendar1.getTime());
System.out.println("date = " + calendar2.getTime());
}
输出:
Millis = 1258614681203
Millis = 1258614681203
hour = 3
hour = 8
date = Thu Nov 19 15:11:21 CST 2009
date = Thu Nov 19 15:11:21 CST 2009
发表评论
-
使用memcached进行并发控制(转)
2015-12-29 14:39 836版权声明:本文为博主 ... -
Lock和Synchronized的不同
2014-10-24 15:46 735在 Java 中线程的状态可以分为:新建(New),运行状 ... -
ClassLoader加载流程
2014-04-16 09:59 578[b]当运行一个程序的时候,JVM启动, 运行bootstar ... -
springmvc请求接收参数的几种方法(转载)
2014-04-14 13:37 1482通过@PathVariabl注解获取路径中传递参数 JAVA ... -
JDK里的设计模式
2014-03-10 09:52 577适配器模式: 用来把一个接口转化成另一个接口。 java ... -
include与jsp:include区别
2014-02-28 15:03 548在jsp中include有两种形式,分别是 <%@ i ... -
DBCP的配置参数
2014-02-25 15:51 710tomcatde DHCP的配置 <Resource d ... -
java 时间处理的工具类(转)
2014-01-27 15:13 618import java.text.ParseException ... -
log4j
2014-01-17 13:56 337public Logger m_log = null; ... -
hessian异常总结
2013-12-12 17:53 1214版本不兼容 com.caucho.hessian.io.Hes ... -
java异常
2013-09-06 12:01 523java.sql.SQLException: Incorrec ... -
汉字转码的java实现
2013-08-05 17:26 971package common; import java.ut ... -
验证邮件的有效性
2013-07-30 14:25 1102public static boolean checkEma ... -
优化Servlet配置
2013-04-09 10:31 612[b] 以往每添加一个Servlet就要在web. ... -
纯hessian的部署(转)
2012-11-06 17:44 799Web 服务是通过在 Web 服务器上部署 Servlet 来 ... -
Ehcache的使用
2012-07-27 15:11 826一、 配置文件ehcache.xml <ehcache& ... -
struts2上传文件活动文件名、类型
2012-05-16 08:45 899public class FileUpload { ... -
struts2乱码
2012-05-14 17:36 0Struts2.1.6 StrutsPrepareAndExe ... -
解决struts2过滤器冲突问题
2012-04-27 13:40 0struts2使用FilterDispatcher进行url过 ... -
cron表达式
2012-03-14 15:02 829所在组的定时任务用的quartz,是我第一个用的,今天有同事用 ...
相关推荐
2. 解析指定时间 public static ZonedDateTime parse(String date,String dateFormat,int offset) 3. 获取某一天的零点 public static ZonedDateTime getTodayZonedDayBegin(int offset) 4. 指定某一天的零点 public...
java编程中String类型时间转化成Date类型
NULL 博文链接:https://chwshuang.iteye.com/blog/947220
主要介绍了Java时区转换及Date类实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了Java时区处理之Date,Calendar,TimeZone,SimpleDateFormat的区别于用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本源码资源提供了Java中的日期时间处理类相关内容,包括日期、时间和时区的操作方法和示例。它涵盖了Java编程中常用的日期时间处理需求以及如何使用日期时间类来解决这些问题。 适用人群 本源码资源适用于具备一定...
说起java中的时间,大家或许都很熟悉,朗朗上口的Date、Calendar、SimpleDateFormat等。但是大家对他们的认识真的很深刻吗?我要想大家说的是TimeZone,即时区。 经常有人发现时间不对,比如相差8个小时等等,其...
SimpleDateFormat、 从字符串到日期类型的转换、获取系统时期和时间、转换成SQL格式后更新到数据库的用法
Java Calendar手机上期选择-日历实现 // 重载抽象类MIDlet的抽象方法startApp() protected void startApp() { Date dd = new Date(); // 表示当前的日期和时间 TimeZone tz = TimeZone.getTimeZone("GMT...
原因:java获得的时区跟系统的时区不一样 解决方法如下: 1.在代码前加上下面这句话行了:TimeZone tz =TimeZone.getTimeZone(Asia/Shanghai);TimeZone.setDefault(tz) 2.在tomcat中修改catalina.bat...
Java 8 是 Java 编程语言的一个重要版本,于2014年3月18日发布。它引入了众多新特性,包括 Lambda 表达式、...新的时间日期 API 更加易用和灵活,而且支持时区、精度等概念,非常适合处理跨时区应用程序的时间问题。
js的时区函数: 设datename为创建的一个Date对象 ==================== datename.getTimezoneOffset() –取得当地时间和GMT时间(格林威治时间)的差值,返回值以分钟为单位 ==================== 举例:根据本地...
用java.util.Date类来实现,并结合java.text.DateFormat类来实现时间的格式化
获取北京时区 获取当前手机对应的系统时区 以“GMT+8:00”形式返回当前系统对应的时区 获取更改时区后的时间 将北京时区的时间转化为当前系统对应时区的时间 将日期字符串转换为Date对象 将date----->String 将Date...
验证自动日期,时间和时区 验证是否将日期,时间和时区设置为与网络提供商自动同步。 安装 cordova plugin add verify-automatic-date-time-zone VerifyAutomaticDateTimeZone.isAutomaticChecked 返回一个布尔值,...
4、Date/Time API:Java 8中引入了新的Date/Time API,它提供了一组强大的日期和时间处理工具,包括时区和夏令时的支持。 5、Nashorn引擎:Java 8中引入了一个新的JavaScript引擎,称为Nashorn。它比原来的...
java.util.Date 转换到 rfc3399格式 import org.joda.time.DateTime; import org.joda.time.DateTimeZone; // java.util.Date 转 过去 // 代码中的TimeZone.getTimeZone() 你可以选填时区 DateTime dt1 = new ...
关于Java时区的详解-2015-01-21 Java: Date local1970 = DateUtils.convertStringToDate("1970-01-01 00:00:00", "yyyy-MM-dd HH:mm:ss"); System.out.println("当前时区的格林尼治时间的毫秒数:"+local1970....
Swift的以前的日期,时间和时区API给Java 8 DateTime API带来了不便,AnyDate Swifty Date&Time API。 背景我认为日期和时间API应该简单而准确。 Swift的以前的日期,时间和时区API使用起来很不方便。 (创建,操作...
概述Date4j 来自 Hirondelle Systems, " 和他的许可证 BSD ( ) DATE4J 是标准 JDK 日期类的简单替代品。... date4j 工具选择专注于数据库如何以简单的样式(没有时区/偏移量)存储日期和时间,而不是对民用计时的神秘