永发信息网

new java.util.Date() 得到的时间与系统时间不一样,为什么?

答案:6  悬赏:50  手机版
解决时间 2021-01-24 18:28
  • 提问者网友:练爱
  • 2021-01-23 17:56
我用 这个 函数得到的时间是:
Sat Oct 20 12:05:56 GMT 2007

而,我系统的时间 却是 :

2007年10月20日 20:05

相差了8小时,为什么啊?? 我系统时区设置什么都是正确的阿!!! ??
最佳答案
  • 五星知识达人网友:酒醒三更
  • 2021-01-23 18:16
你的这个问题系 系统 JVM的事,可以设置下时区,通过以下的语句:

import java.util.*;

TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz);

//显示Java能识别的系统中所有正确的时区
全部回答
  • 1楼网友:骨子里都是戏
  • 2021-01-23 22:12
new java.util.Date()得到的是格林威治时间,我们的北京时间比它晚8个小时,因为北京在东八区
  • 2楼网友:刀戟声无边
  • 2021-01-23 21:17
不是呀,我用new Date得到的时间就是系统时间呀,没错呀~~~ 我是这样用的 import java.util.*; System.out.println(new Date());
  • 3楼网友:一袍清酒付
  • 2021-01-23 20:10
GMT就是格林威治时间的意思,你用的是Date类的默认构造方法,没有加参数,默认的构造方法就是构造一个GMT时区的时间。
  • 4楼网友:末日狂欢
  • 2021-01-23 19:54
new Date()的到的是JVM的时间,一般来说应该是系统时间.如果有错误,则是JVM的BUG(这个是存在的情况). 所以你可以用Locale.SIMPLIFIED_CHINESE来指定你当前的时区(这里的是中国时区). 用new SimpleDateFormat("yyyy-MM-dd",Locale.SIMPLIFIED_CHINESE)来设置你显示的效果和时区最好.
  • 5楼网友:旧脸谱
  • 2021-01-23 19:47
java语言中链表和双向链表的实现 cron 表达式.java.util.date 2009-04-15 00:03:04| 分类: java | 标签: |字号大中小 订阅 . java中的时间操作不外乎这四种情况: 1、获取当前时间 2、获取某个时间的某种格式 3、设置时间 4、时间的运算 好,下面就针对这三种情况,一个一个搞定。 一、获取当前时间 有两种方式可以获得,第一种,使用date类。 j2se的包里有两个date类,一个是java.sql.date,一个是java.util.date 这里,要使用java.util.date。获取当前时间的代码如下 date date = new date(); date.gettime(); 还有一种方式,使用system.currenttimemillis(); 这两种方式获得的结果是一样的,都是得到一个当前的时间的long型的时间的毫秒值,这个值实际上是当前时间值与1970年一月一号零时零分零秒相差的毫秒数。 当前的时间得到了,但实际的应用中最后往往不是要用这个long型的东西,用户希望得到的往往是一个时间的字符串,比如“2006年6月18号”,或“2006-06-18”,老外可能希望得到的是“06-18-2006”,诸如此类等等。这就是下一个要解决的问题 二、获取某个时间的某种格式 获取时间的格式,需要用到一个专门用于时间格式的类java.text.simpledateformat。 首先,定义一个simpledateformat变量 simpledateformat sdf = new simpledateformat("",locale.simplified_chinese); 这个构造函数的定义如下: simpledateformat(string pattern, locale locale) 第一个参数pattern,我们后面再解释,这里我们使用一个"",第二个参数,是用来设置时区的,这里用到了java.util.locale 这个类,这个类了面定义了很多静态变量,直接拿过来用就ok,我们把时区设置为locale.simplified_chinese,只看名字,这个静态变量的意义已经很清楚了。 接下来我们使用这个simpledateformat把当前时间格式化为一个如下格式的时间字符串“xxxx年xx月xx日_xx时xx分xx秒”,代码: sdf.applypattern("yyyy年mm月dd日_hh时mm分ss秒"); string timestr = sdf.format(new date()); 获取时间格式的函数是format,这个函数的参数是java.util.date对象,这个没有什么花头。 要说明一下的是这个pattern,所谓的模式。这里,yyyy,mm,dd等,这就是模式。 我们可以在simpledateformat的构造函数中指定模式,比如 simpledateformat sdf = new simpledateformat("yyyy-mm-dd",locale.simplified_chinese); 也可以获取时间格式的时候使用applypattern函数临时指定,上面的例子就是这样。 什么字符代表什么,这是j2se约定好的,设置模式的时候,我们可以使用约定好的字符加上任何我们想要的字符串。 j2se对字符所代表的模式的约定列表如下: letter date or time component presentation g era designator text y year year m month in year month w week in year number w week in month number d day in year number d day in month number f day of week in month number e day in week text a am/pm marker text h hour in day (0-23) number k hour in day (1-24) number k hour in am/pm (0-11) number h hour in am/pm (1-12) number m minute in hour number s second in minute number s millisecond number z time zone general time zone z time zone rfc 822 time zone 评论这张 转发至微博 转发至微博
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯