仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1971|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网页编程之转:java.util中的Date类

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:55:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
没有那个大公司会傻了吧唧用.net开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net不行,限制在window系统,又是捆绑,鄙视微软之!java.util中的Date类

www.linuxaid.com.cn01-09-2023:03496p到处
--------------------------------------------------------------------------------


在JSP中,我们常常要处置有关日期和工夫的信息,这时候候你可使用java.util中的Date类,在编写Java源程序时,情形很分明,你必需经由过程“importjava.util.*”引进java.util软件包;而在编写JSP源程序时,因为Date不是JSP的默许对象,你仍旧必需经由过程“<%@pageimport="java.util.*"”引进这个软件包。别的,因为在java.sql中存在一个同名的Date类,为了将这二者准确区域分,但凡用到java.util中的Date类时,你最好将其写成java.util.Date。
现实上,Date类其实不仅仅暗示日期,而是准确到毫秒。从这个角度看,大概将其称为DateTime更加符合,在本文中,我们偶然也将Date称为日期,但愿不会引发读者的曲解。
在谈到java.util中的Date类时,我们常常会提到UTC和GMT,这二者几近是统一观点。它们都是指的格林尼治本定时间,只不外UTC的称号更加正式一点。二者的区分在于前者是一个地理上的观点,尔后者是基于一个原子钟。在UTC中,每年或两年会有一个“闰秒”,而我们一样平常不睬会这个“闰秒”,可是在Java中,这形成我们偶然会呈现60秒或61秒。
Date类中有响应的办法,它能够将日期分化为年、月、日、时、分、秒,能够将其转换成一个字符串,它还能够实行反向的操纵。可是从JDK1.1入手下手,Calendar类和DateFormat类也能够实行这两类的功效,依照Java的官方文件,响应的在Date类中的办法不再保举利用。可是在道理上,二者并没过年夜的不同。在本文中,我们仍将先容这些办法,只是会作响应的说明。
在一切情形下,这些办法所承受的参数都不必要满意无效局限;比方,一个日期假如被界说为1月32日,它将被注释为2月1日。

1、Date的机关函数

1.1机关一个反应事先工夫的Date实例
Date
publicDate()
机关一个Date对象并对其举行初始化以反应以后工夫。

1.2从一个长整型数据机关一个Date实例
Date
publicDate(longdate)
机关一个Date对象,并依据相对GMT1970年1月1日00:00:00的毫秒数对其举行初始化。
参数:
date-相对GMT1970年1月1日00:00:00的毫秒数。

1.3从年代日时分秒机关一个Date实例
Date
publicDate(intyear,
intmonth,
intdate)
publicDate(intyear,
intmonth,
intdate,
inthrs,
intmin)
publicDate(intyear,
intmonth,
intdate,
inthrs,
intmin,
intsec)
这三个机关函数均不保举利用,在JDK1.1版中,分离被Calendar.set(year+1900,month,date)或GregorianCalendar(year+1900,month,date)、Calendar.set(year+1900,month,date,hrs,min)或GregorianCalendar(year+1900,month,date,hrs,min)、Calendar.set(year+1900,month,date,hrs,min,sec)或GregorianCalendar(year+1900,month,date,hrs,min,sec)取代。

机关一个Date对象,并分离将其初始化为year、month和date所对应日期的入手下手工夫(即半夜)、year、month、date、hrs和min所对应分钟的入手下手工夫、year、month、date、hrs、min和sec所对应秒的入手下手工夫。
参数:
year-年份减往1900。
month-月份在0-11之间。
date-日期在1-31之间。
hrs-小时在0-23之间。
min-分钟在0-59之间。
sec-秒在0-59之间。

1.4从一个字符串机关一个Date实例
Date
publicDate(Strings)
不保举利用。在JDK1.1版中,被DateFormat.parse(Strings)取代。
机关一个Date对象,并将其初始化为字符串s所对象的日期和工夫。对字符串的剖析将和parse(java.lang.String)办法一样。
参数:
s-一个反应日期的字符串。

2、别的办法

2.1将一个字符串转换成Date对象响应的长整形暗示
parse
publicstaticlongparse(Strings)
不保举利用。在JDK1.1版中,被DateFormat.parse(Strings)取代。
试图将字符串s作为日期和工夫的暗示来剖析。假如剖析是乐成的,将前往相对GMT1970年1月1日00:00:00的毫秒数。反之,将抛出IllegalArgumentException破例。
它能够承受很多语句格局;详细地说,它能够了解这类格局:"Sat,12Aug199513:30:00GMT"。它也能够了解U.S.如许的时区缩写,可是一般,我们如许暗示时区:"Sat,12Aug199513:30:00GMT+0430"。假如没指明时区,那就暗示默许以后的时区。在这里,GMT和UTC暗示不异的观点。
字符串s是从左到右举行处置的。在“(”和“)”之间的字符将被疏忽。括号能够嵌套。别的,该字符串只能包括以下字符:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789,+-:/
和空格。
在该字符串中呈现的数字将按以下划定规矩剖析:
假如一个数字以+或-开首,并且年份已被考证,那末这个数字将被以为是时区设置。假如这个数字小于24,这代表是时区偏移的小时。不然,就是时区偏移的分钟。标记-暗示西部的时区。时区设置老是相对UTC的。如许,比方,-5暗示"格林尼治西5小时",而+0430暗示"格林尼治东4小时30分"。你也能够利用冗余的字符:GMT、UT和UTC。比方,GMT-5或utc+0430。
假如满意以下前提之一,这个数字将暗示年份:
1、数字即是或年夜于70并且前面随着一个空格、逗号或斜杠,大概是在字符串的开头。
2、假如数字小于70,并且月份或日期已被界说。
假如暗示年份的数字小于100,这是一个缩写,暗示在以后的80年之前、19年以后的一个区间中一个年份。假如以后是1999年,那末19到99暗示1919到1999,而0到18暗示2000到2018。这里必要出格注重和SimpleDateFormat中的分歧。
假如数字前面随着一个冒号,这暗示小时,除非小时已被界说。在小时已被界说的情形下,这暗示分钟。
假如数字前面随着一个斜杠,这暗示月份(这里0到11暗示一到十仲春),除非月份已被界说。在月份已被界说的情形下,这暗示日期。
假如数字前面随着一个空格、逗号或连字号,大概是在字符串的开头,在已界说了小时但还没有界说分钟的情形下,这暗示分钟;在已界说了小时和分钟但还没有界说秒的情形下,这暗示秒;不然这暗示日期。
在该字符串中呈现的字母将按以下划定规矩剖析:
AM(疏忽巨细写),将被疏忽(可是假如小时未被界说、小于1或年夜于12,剖析将失利)。
PM(疏忽巨细写),将在小时后加12(可是假如小时未被界说、小于1或年夜于12,剖析将失利)。
SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY和SATURDAY和它们的前缀(疏忽巨细写),将被疏忽。比方sat,Friday,TUE和Thurs都将被疏忽。
别的,JANUARY、FEBRUARY、MARCH、APRIL、MAY、JUNE、JULY、AUGUST、SEPTEMBER、OCTOBER、NOVEMBER和DECEMBER和它们的前缀(疏忽巨细写),将按这里的按次被视为暗示月份并将其转换成数字(0to11)。比方,aug,Sept,april和NOV都暗示月份。而Ma将被了解为MARCH而不是MAY。
GMT,UT和UTC(疏忽巨细写),将被视为UTC。
EST,CST,MST和PST(疏忽巨细写),将被视为北美的时区,分离是格林尼治西5小时、6小时、7小时、8小时。而EDT,CDT,MDT和PDT暗示统一观点。
当全体字符串被扫描时,假如时区被界说,工夫被以为是UTC的工夫,然后再使用时区。不然,工夫指以后时区的工夫。
参数:
s-一个作为日期剖析的日期。
前往:
相对GMT1970年1月1日00:00:00的毫秒数。
2.2猎取Date对象中的年、月、日、时、分、秒元素和礼拜
getYear
publicintgetYear()
getMonth
publicintgetMonth()
getDate
publicintgetDate()
getDay
publicintgetDay()
getHours
publicintgetHours()
getMinutes
publicintgetMinutes()
getSeconds
publicintgetSeconds()
这组办法均不保举利用。JDK1.1版中,分离被Calendar.get(Calendar.YEAR)-1900、Calendar.get(Calendar.MONTH)、Calendar.get(Calendar.DAY_OF_MONTH)、Calendar.get(Calendar.DAY_OF_WEEK)、Calendar.get(Calendar.HOUR_OF_DAY)、Calendar.get(Calendar.MINUTE)、Calendar.get(Calendar.SECOND)取代。
其功效顺次为:
前往Date所对应年份减往1900。
前往Date对象所对应的月份。前往值在0到11之间,0暗示1月。
返加这个Date对象的日期。前往值在1到31之间。
前往这个日期的礼拜。(0=礼拜天,1=礼拜一,2=礼拜二,3=礼拜三,4=木曜日,5=礼拜五,6=礼拜六)
返加这个Date对象的小时。前往值是一个0到23的数字。
前往这个日期的分钟,前往值在0到59之间。
前往日期的秒。前往值在0到61之间。60和61仅仅在Java假造机在处置闰秒时呈现。

2.3设置Date对象中的年、月、日、时、分、秒元素
setYear
publicvoidsetYear(intyear)
setMonth
publicvoidsetMonth(intmonth)
setDate
publicvoidsetDate(intdate)
setHours
publicvoidsetHours(inthours)
setMinutes
publicvoidsetMinutes(intminutes)
setSeconds
publicvoidsetSeconds(intseconds)
这组办法均不保举利用。在JDK1.1版中,分离被Calendar.set(Calendar.YEAR,year+1900)、Calendar.set(Calendar.MONTH,intmonth)、Calendar.set(Calendar.DAY_OF_MONTH,intdate)、Calendar.set(Calendar.HOUR_OF_DAY,inthours)、Calendar.set(Calendar.MINUTE,intminutes)、Calendar.set(Calendar.SECOND,intseconds)取代。
其功效顺次为:
设置Date对象的年份为指定值加1900。Date对象的别的属性稳定(假如日期是2月29日,而所设置的年长短闰年,新的日期将是3月1日。)
设置日期的月份为指定值。日期的别的元素稳定。假如日期是10月31日,而如今月份设为6月,新的日期将是7月1日,由于6月只要30天。
设置Date对象的日期为指定值。日期的别的元素稳定。假如日期是4月31日,而如今日期设为31日,新的日期将是5月1日,由于4月只要30天。
设置这个Date对象的小时,日期的别的元素稳定。
设置这个Date对象的分钟为指定值,日期的别的元素稳定。
将这个Date对象的秒设置为指定值。对象的别的属性稳定。
其参数顺次为:
year-年份。
month-月份在0-11之间。
date-日期在1-31之间。
hours-小时价。
minutes-分钟。
seconds-秒。

2.4两个日期对象的对照
before
publicbooleanbefore(Datewhen)
after
publicbooleanafter(Datewhen)
equals
publicbooleanequals(Objectobj)
compareTo
publicintcompareTo(DateanotherDate)
compareTo
publicintcompareTo(Objecto)
其功效顺次为:
测试这个日期是不是在指定日期之前。
测试这个日期是不是在指定日期以后。
对照两个日期是不是相称。当且仅当参数不为空,并且参数与这个Date对象完整相称时(准确到毫秒级),前往true。现实上,两个Date对象相称,也就是说getTime办法前往统一个长整型数据。
对照两个日期的按次。
将这个日期与另外一个对象对照。假如这个对象是一个日期,其功效将与compareTo(Date)完整类似。不然会抛出一个ClassCastException破例(由于日期只能与另外一个日期对照)。
其参数顺次为:
when-一个日期。
when-一个日期。
obj-用来对照的对象。
anotherDate-用来对照的Date。
o-用来对照的Object。
前往顺次为:
当且仅当这个Date对象早于when时前往true;不然前往false。
当且仅当这个Date对象迟于when时前往true;不然前往false。
两个对象相称时前往true,不然前往false。
假如两个日期相称前往0;假如日期在参数值之前前往小于0的数值;假如日期在参数值之前前往年夜于0的数值。
假如两个日期相称前往0;假如日期在参数值之前前往小于0的数值;假如日期在参数值之前前往年夜于0的数值。

2.5日期对象及其对应的长整型暗示
getTime
publiclonggetTime()
前往这个Date对象相对GMT1970年1月1日00:00:00的毫秒数。
前往:
相对GMT1970年1月1日00:00:00的毫秒数。

setTime
publicvoidsetTime(longtime)
依照相对GMT1970年1月1日00:00:00的毫秒数设置这个Date对象。
参数:
time-毫秒数。

2.6别的
clone
publicObjectclone()
前往这个对象的一个拷贝。
前往:
这个实例的一个拷贝。
抛出:
CloneNotSupportedException-假如这个对象的类不撑持Cloneable接口。将抛出这个破例。
OutOfMemoryError-没有充足的内存。

UTC
publicstaticlongUTC(intyear,
intmonth,
intdate,
inthrs,
intmin,
intsec)
不保举利用。在JDK1.1版中,被Calendar.set(year+1900,month,date,hrs,min,sec)或GregorianCalendar(year+1900,month,date,hrs,min,sec),(利用UTCTimeZone),跟从在Calendar.getTime().getTime()前面所取代。
依据参数断定日期和工夫。这个参数被剖析为年、月、日、时、分、秒。就和在Date机关函数中一样,只不外是利用的UTC而不是利用以后时区。这个工夫将被暗示为相对GMT1970年1月1日00:00:00的毫秒数。
参数:
year-年份减往1900。
month-月份在0-11之间。
date-日期在1-31之间。
hrs-小时在0-23之间。
min-分钟在0-59之间。
sec-秒在0-59之间。
前往:
参数所对应日期相对GMT1970年1月1日00:00:00的毫秒数。

hashCode
publicinthashCode()
前往这个对象的hash代码值,也就是说对getTime()办法前往的长整型数值作以下运算:
(int)(this.getTime()^(this.getTime()>>>32))
前往:
这个对象的hash代码值。

toString
publicStringtoString()
将这个Date对象转换成以下格局的String:
dowmonddhh:mm:sszzzyyyy
在这里:
dow是礼拜(Sun,Mon,Tue,Wed,Thu,Fri,Sat)。
mon是月份(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)。
dd是日期(01到31),用两位数字暗示。
hh是小时(00到23),用两位数字暗示。
mm是分钟(00到59),用两位数字暗示。
ss是秒(00到61,用两位数字暗示。
zzz是时区。尺度的时区的缩写和在parse办法中的一样。假如时区信息有效zzz为空-也就是说,不包括任何字符。
yyyy是年份,用四位数字暗示。
前往:
暗示这个日期的字符串。

toLocaleString
publicStringtoLocaleString()
不保举利用。JDK1.1版中,被DateFormat.format(Datedate)取代。
依照以后格局天生反应这个Date对象的字符串。这类格局字符串关于Java使用程序开辟员应当是相称熟习的。但是,它与ISOC中strftime()函数的"%c"格局其实不完整不异。
前往:
反应这个日期的字符串,利用以后的商定。

toGMTString
publicStringtoGMTString()
不保举利用。JDK1.1版中,被DateFormat.format(Datedate)(利用GMT时区)取代。
按以下格局创建一个反应这个Date对象的字符串:dmonyyyyhh:mm:ssGMT
个中:
d日期(1到31),用一到两位数字暗示。
mon月份(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)。
yyyy年份,用四位数字暗示。
hh小时(00到23),用两位数字暗示。
mm分钟(00到59),用两位数字暗示。
ss秒(00到61),用两位数字暗示。
GMT指定为格林尼治本定时。
前往值与以后时区有关。
前往:
反应以后日期的字符串(利用InternetGMT)。

getTimezoneOffset
publicintgetTimezoneOffset()
不保举利用。JDK1.1版中,被Calendar.get(Calendar.ZONE_OFFSET)+Calendar.get(Calendar.DST_OFFSET)取代。
前往时区,准确到分钟。
比方,在麻萨诸塞州,应当是格林尼治西5小时:
newDate(96,1,14).getTimezoneOffset()前往300,由于在1996年1月14日,利用尺度工夫(东部尺度时);可是,newDate(96,5,1).getTimezoneOffset()前往240,由于在1996年5月1日,利用夏令时(东部夏令时)。
这个办法前往值和以下盘算的了局一样:
(this.getTime()-UTC(this.getYear(),
this.getMonth(),
this.getDate(),
this.getHours(),
this.getMinutes(),
this.getSeconds()))/(60*1000)
前往值:
以后时区的设置,准确到分钟。


J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看NetBeans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。
柔情似水 该用户已被删除
沙发
发表于 2015-1-21 17:21:57 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
莫相离 该用户已被删除
板凳
发表于 2015-1-24 11:38:51 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
若相依 该用户已被删除
地板
发表于 2015-1-26 17:28:16 | 只看该作者
是一种突破用户端机器环境和CPU
深爱那片海 该用户已被删除
5#
发表于 2015-2-4 17:35:16 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
分手快乐 该用户已被删除
6#
发表于 2015-2-9 07:42:56 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
变相怪杰 该用户已被删除
7#
发表于 2015-2-11 13:08:45 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
小妖女 该用户已被删除
8#
发表于 2015-2-13 11:44:52 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
简单生活 该用户已被删除
9#
发表于 2015-3-3 20:24:34 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
飘飘悠悠 该用户已被删除
10#
 楼主| 发表于 2015-3-3 23:29:00 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
兰色精灵 该用户已被删除
11#
发表于 2015-3-6 06:00:12 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
透明 该用户已被删除
12#
发表于 2015-3-11 11:27:14 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
精灵巫婆 该用户已被删除
13#
发表于 2015-3-15 18:38:30 | 只看该作者
是一种突破用户端机器环境和CPU
冷月葬花魂 该用户已被删除
14#
发表于 2015-3-17 16:10:12 | 只看该作者
是一种为 Internet发展的计算机语言
再见西城 该用户已被删除
15#
发表于 2015-3-24 11:19:59 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
灵魂腐蚀 该用户已被删除
16#
发表于 2015-3-30 04:11:59 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
海妖 该用户已被删除
17#
发表于 2015-4-4 13:20:20 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
山那边是海 该用户已被删除
18#
发表于 2015-4-13 19:00:41 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
蒙在股里 该用户已被删除
19#
发表于 2015-4-17 14:34:37 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
金色的骷髅 该用户已被删除
20#
发表于 2015-5-1 14:09:32 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-26 21:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表