⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 有关mysql文章教程,本人收集的一些有关mysql文章教程
💻
📖 第 1 页 / 共 5 页
字号:
        </table>
</td>
</tr>
</table>    <br>
 <table width="96%" align="center" cellspacing="10" bgcolor="#E7E3E4" >
 <tr>
        <td bgcolor="#FFFFFF">
	 <table width="96%" align="center" >
          <tr>
            <td align="center"><span class="article_title">今后的路,何去何从</span></td>
          </tr>
          <tr>
            <td align="right">2004年 12月12日</td>
          </tr>
          <tr>
            <td class="article_content">&#160;&#160;&#160;&#160; 这段时间在学<span>JAVA</span>,于是想做个<span>JSP</span>论坛实践一下,也好检验一下学习的效果。由于刚学<span>JAVA</span>,所以遇到了很多的问题,为了解决这些碰到的难题,加入了几个专门讨论<span>JAVA</span>技术的<span>QQ</span>群,在那里认识好多各行各业的朋友,大家一起交流学习<span>JAVA</span>的心得,取得了很好的学习效果,另一方面,大家也谈到了各自的生活、工作经历。从他们的言谈中,才体会到了在当今这个竞争激烈的社会中,工作的压力有多大,想想版书还是很庆幸的。最起码没有那么大的生活、工作中的压力。 <p>&#160;&#160;&#160; 不过不知是为了什么,在自己的内心深处,老是有一种隐隐的痛,而且随着时间的流失,随着年龄的增长,也愈发的强烈。(未完成)</p></td>
          </tr>
          <tr>
            <td align="right"><font color="#9C3316">anjia66 于00 : 39 发表 已被浏览16次</font> <a href="blog/article_83066.433234.html">评论(0)</a> / <a href="blog/refer.433234.html">引用(0)</a>
	    <a href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://blogmark.blogchina.com/jsp/key/quickaddkey.jsp?k='+encodeURI(d.title)+'&u='+encodeURI(d.location.href)+'&c='+encodeURI(t),'keyit','scrollbars=no,width=500,height=430,status=no,resizable=yes'));keyit.focus();">加入博采中心</a></td>
          </tr>
        </table>
</td>
</tr>
</table>    <br>
 <table width="96%" align="center" cellspacing="10" bgcolor="#E7E3E4" >
 <tr>
        <td bgcolor="#FFFFFF">
	 <table width="96%" align="center" >
          <tr>
            <td align="center"><span class="article_title">tomcat5中配置mysql数据源</span></td>
          </tr>
          <tr>
            <td align="right">2004年 12月02日</td>
          </tr>
          <tr>
            <td class="article_content">&#160;&#160;&#160;&#160;&#160; 前几天为了在<span>Tomcat5</span>中配置<span>MySql</span>的数据源,在网上到处搜刮资料,最终仍未能配置成功。迫不得已,花了些银子买本书,看完后感觉收获很大。再来配置数据源简直就是小菜一碟了,现将配置过程详述如下,一来作为版书的资料,二来希望为大家提供些帮助。<span><p>&nbsp;</p></span>一、配置环境变量:<span><p>&nbsp;</p></span><span>softe version:tomcat5.0.12/mysql4.1.7/mysql_driver---mysql-connector-java-3.1.4-beta-bin.jar<p>&nbsp;</p></span><span>mysql</span>驱动程序可从<span><a href="http://www.mysql.com/" rel="nofollow">www.mysql.com</a></span>官方网站下载<span><p>&nbsp;</p></span>路径:<span>tomcat5</span>在<span>d:&#92;myweb&#92;tomcat5</span>;<span>mysql</span>在<span>C:&#92;Program Files&#92;MySQL&#92;MySQL Server 4.1<p>&nbsp;</p></span><span>Path(</span>在原来的基础上加上):<span>d:&#92;myweb&#92;tomcat5&#92;bin;d:&#92;myweb&#92;jdk1.4;d:&#92;myweb&#92;jdk1.4&#92;bin;<p>&nbsp;</p></span><span>d:&#92;myweb&#92;tomcat5&#92;common&#92;lib&#92;servlet-api.jar;C:&#92;Program Files&#92;MySQL&#92;MySQL Server 4.1&#92;bin<p>&nbsp;</p></span><span>CLASSPATH:d:&#92;myweb&#92;tomcat5&#92;common&#92;lib&#92;servlet-api.jar;d:&#92;myweb&#92;tomcat5&#92;common&#92;lib&#92;jsp-api.jar<p>&nbsp;</p></span><span>JAVA_HOME:d:&#92;myweb&#92;jdk1.4<p>&nbsp;</p></span><span>CATALINA_HOME:d:&#92;myweb&#92;tomcat5<p>&nbsp;</p></span>二、建立测试数据库<span><p>&nbsp;</p></span>在<span>mysql</span>中建立一个<span>forumdb</span>数据库,同时创建一个表<span>member</span>如下:<span><p>&nbsp;</p></span><span>create database forumdb;<p>&nbsp;</p></span><span>create table member<p>&nbsp;</p></span><span>(<p>&nbsp;</p></span><span>id int,<p>&nbsp;</p></span><span>name varchar(6)<p>&nbsp;</p></span><span>);<p>&nbsp;</p></span>然后插入两条测试数据如下:<span><p>&nbsp;</p></span><span>insert into member values(1,&quot;zhang&quot;);<p>&nbsp;</p></span><span>insert into member values(2,&quot;wang&quot;);<p>&nbsp;</p></span>至此,数据库准备完毕。<span><p>&nbsp;</p></span>三、配置<span>server.xml<p>&nbsp;</p></span>注:我的<span>web</span>在<span>d:&#92;myweb&#92;myapps<p>&nbsp;</p></span>首先要将<span>mysql</span>的驱动程序放到<span>d:&#92;myweb&#92;tomcat5&#92;common&#92;lib</span>下面,一定要放<span>&quot;.jar&quot;</span>的文件,如是<span>&quot;.zip&quot;</span>的文件直接改为<span>.jar</span>即可。<span><p>&nbsp;</p></span>用文本编辑器打开<span>D:&#92;tomcat5&#92;conf&#92;server.xml</span>,找到<span>&lt;/host&gt;</span>结束标志,然后在之前加上如下语句:<span><p>&nbsp;</p></span><span>&lt;Context path=&quot;/myapps&quot; docBase=&quot;d:&#92;myweb&#92;myapps&quot; debug=&quot;0&quot;<br />reloadable=&quot;true&quot; &gt;<p>&nbsp;</p></span><span><br />&#160; &lt;Resource name=&quot;jdbc/DBConnection&quot;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; auth=&quot;Container&quot;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; type=&quot;javax.sql.DataSource&quot; /&gt;<p>&nbsp;</p></span><span>&#160; &lt;ResourceParams name=&quot;jdbc/DBConnection&quot;&gt;<br />&#160;&#160;&#160; &lt;parameter&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;name&gt;factory&lt;/name&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;<br />&#160;&#160;&#160; &lt;/parameter&gt;<p>&nbsp;</p></span><span>&#160;&#160;&#160; &lt;!-- Maximum number of dB connections in pool. Make sure you<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; configure your mysqld max_connections large enough to handle<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; all of your db connections. Set to 0 for no limit.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; --&gt;<br />&#160;&#160;&#160; &lt;parameter&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;name&gt;maxActive&lt;/name&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;value&gt;10&lt;/value&gt;<br />&#160;&#160;&#160; &lt;/parameter&gt;<p>&nbsp;</p></span><span>&#160;&#160;&#160; &lt;!-- Maximum number of idle dB connections to retain in pool.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Set to 0 for no limit.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; --&gt;<br />&#160;&#160;&#160; &lt;parameter&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;name&gt;maxIdle&lt;/name&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;value&gt;3&lt;/value&gt;<br />&#160;&#160;&#160; &lt;/parameter&gt;<p>&nbsp;</p></span><span>&#160;&#160;&#160; &lt;!-- Maximum time to wait for a dB connection to become available<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; in ms, in this example 10 seconds. An Exception is thrown if<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this timeout is exceeded.&#160; Set to -1 to wait indefinitely.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Maximum time to wait for a dB connection to become available<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; in ms, in this example 10 seconds. An Exception is thrown if<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this timeout is exceeded.&#160; Set to -1 to wait indefinitely.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; --&gt;<br />&#160;&#160;&#160; &lt;parameter&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;name&gt;maxWait&lt;/name&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;value&gt;10000&lt;/value&gt;<br />&#160;&#160;&#160; &lt;/parameter&gt;<p>&nbsp;</p></span><span>&#160;&#160;&#160; &lt;!-- MySQL dB username and password for dB connections&#160; --&gt;<br />&#160;&#160;&#160; &lt;parameter&gt;<br />&#160;&#160;&#160;&#160; &lt;name&gt;username&lt;/name&gt;<br />&#160;&#160;&#160;&#160; &lt;value&gt;root&lt;/value&gt;<br />&#160;&#160;&#160; &lt;/parameter&gt;<br />&#160;&#160;&#160; &lt;parameter&gt;<br />&#160;&#160;&#160;&#160; &lt;name&gt;password&lt;/name&gt;<br />&#160;&#160;&#160;&#160; &lt;value&gt;1234&lt;/value&gt;<br />&#160;&#160;&#160; &lt;/parameter&gt;<p>&nbsp;</p></span><span>&#160;&#160;&#160; &lt;!-- Class name for mm.mysql JDBC driver --&gt;<br />&#160;&#160;&#160; &lt;parameter&gt;<br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;name&gt;driverClassName&lt;/name&gt;<br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;value&gt;com.mysql.jdbc.Driver&lt;/value&gt;<br />&#160;&#160;&#160; &lt;/parameter&gt;<p>&nbsp;</p></span><span>&#160;&#160;&#160; &lt;!-- The JDBC connection url for connecting to your MySQL dB.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; The autoReconnect=true argument to the url makes sure that the<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mm.mysql JDBC Driver will automatically reconnect if mysqld closed the<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; connection.&#160; mysqld by default closes idle connections after 8 hours.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; --&gt;<br />&#160;&#160;&#160; &lt;parameter&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;name&gt;url&lt;/name&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;value&gt;jdbc:mysql://localhost:3306/forumdb?autoReconnect=true&lt;/value&gt;<br />&#160;&#160;&#160; &lt;/parameter&gt;<br />&#160; &lt;/ResourceParams&gt;<p>&nbsp;</p></span><span>&lt;/Context&gt;<br /></span>再次提醒:一定要放在<span>&lt;/host&gt;</span>之前!<span><p>&nbsp;</p></span>四、配置<span>web.xml<p>&nbsp;</p></span><span>web.xml</span>位于<span>d:&#92;myweb&#92;myapps&#92;WEB-INF</span>下,也即是你的<span>WEB</span>里的<span>web.xml</span>。<span><p>&nbsp;</p></span>同样用文本编辑器打开<span>web.xml</span>,然后加入如下语句(在<span>&lt;web-app&gt;</span>与<span>&lt;/web-app&gt;</span>之间)<span><p>&nbsp;</p></span><span>&lt;resource-ref&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;description&gt;DB Connection&lt;/description&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;res-ref-name&gt;jdbc/DBConnection&lt;/res-ref-name&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />&#160;&#160;&#160;&#160;&#160; &lt;res-auth&gt;Container&lt;/res-auth&gt;<br />&#160; &lt;/resource-ref&gt;<br /><br /><br /></span>五、编写测试<span>jsp page</span>。<span><p>&nbsp;</p></span>在<span>d:&#92;myweb&#92;myapps&#92;</span>下编写一个<span>dbtest.jsp</span>,代码如下:<span><p>&nbsp;</p></span><span>&lt;%@ page import=&quot;java.io.*,java.util.*,java.sql.*,javax.sql.*,javax.naming.*&quot;%&gt;<br />&lt;%@ page contentType=&quot;text/html;charset=GB2312&quot;%&gt;<br />&lt;html&gt;<br />&lt;head&gt;&lt;title&gt;DataSourse Connection Test&lt;/title&gt;&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br />&#160;try{<br />&#160;&#160;java.sql.Connection con;<br />&#160;&#160;Statement stmt;<br />&#160;&#160;ResultSet rs;<br />&#160;&#160;<br />&#160;&#160;Context ctx = new InitialContext();<br />&#160;&#160;DataSource ds=(DataSource)ctx.lookup(&quot;java:comp/env/jdbc/DBConnection&quot;);<br />&#160;&#160;con=ds.getConnection();<br />&#160;&#160;<br />&#160;&#160;stmt=con.createStatement();<br />&#160;&#160;rs=stmt.executeQuery(&quot;select * from member&quot;);<br />while(rs.next()){<br />&#160;&#160;out.print(rs.getInt(1);<p>&nbsp;</p></span><span>out.print(rs.getString(2));<br />}<br />&#160;&#160;rs.close();<br />&#160;&#160;stmt.close();<br />&#160;&#160;con.close();<br />&#160;&#160;<br />&#160;}catch(Exception e){<br />&#160;&#160;out.print(e.getMessage());<br />&#160;}<br />&#160;&#160;<br />%&gt;<p>&nbsp;</p></span><span><br />&lt;/body&gt;<br />&lt;/html&gt;<p>&nbsp;</p></span>六、开始测试<span><p>&nbsp;</p></span><span><br /></span>运行<span>tomcat.bat,</span>打开<span>IE</span>在地址栏中输入:<span><a href="http://localhost:8080/myapps/dbtest.jsp" rel="nofollow">http://localhost:8080/myapps/dbtest.jsp</a> </span><p>如果能够看到看到如下数据,恭喜你,成功了,若没有,说明还是有问题,只好再来了(通常都是最简单的拼错字符的问题)<span><br /><span>1 zhang</span></span></p><span><span><p>&nbsp;</p></span><span>2 wang<p>&nbsp;</p></span><br /><p>&nbsp;</p></span><span><p>&nbsp;</p></span></td>
          </tr>
          <tr>
            <td align="right"><font color="#9C3316">anjia66 于23 : 57 发表 已被浏览117次</font> <a href="blog/article_83066.371997.html">评论(0)</a> / <a href="blog/refer.371997.html">引用(3)</a>
	    <a href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://blogmark.blogchina.com/jsp/key/quickaddkey.jsp?k='+encodeURI(d.title)+'&u='+encodeURI(d.location.href)+'&c='+encodeURI(t),'keyit','scrollbars=no,width=500,height=430,status=no,resizable=yes'));keyit.focus();">加入博采中心</a></td>
          </tr>
        </table>
</td>
</tr>
</table>    <br>
 <table width="96%" align="center" cellspacing="10" bgcolor="#E7E3E4" >
 <tr>
        <td bgcolor="#FFFFFF">
	 <table width="96%" align="center" >
          <tr>
            <td align="center"><span class="article_title">继续学习</span></td>
          </tr>
          <tr>
            <td align="right">2004年 12月02日</td>
          </tr>
          <tr>
            <td class="article_content">&#160;&#160;&#160;&#160; 用了一天的时间,总算将<span>JDBC</span>与<span>MYSQL</span>数据库的连接问题初步弄清了,原来以为学数据库无非就是会创建数据库、数据表、会操作表也就可以了,从服务器端考虑最多就是会维护服务器就可以了,这两几天看了大量的<span>MYSQL</span>的资料,才知原来要学的东西多着呢,了解一项技术是很容易的,但真要是掌握它真的是很难的,看来自已还有很远的路要走。无论攀登技术高峰的路多么难走,我会一直走下去的,我相信我有这个能力。</td>
          </tr>
          <tr>
            <td align="right"><font color="#9C3316">anjia66 于03 : 15 发表 已被浏览16次</font> <a href="blog/article_83066.366001.html">评论(0)</a> / <a href="blog/refer.366001.html">引用(0)</a>
	    <a href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://blogmark.blogchina.com/jsp/key/quickaddkey.jsp?k='+encodeURI(d.title)+'&u='+encodeURI(d.location.href)+'&c='+encodeURI(t),'keyit','scrollbars=no,width=500,height=430,status=no,resizable=yes'));keyit.focus();">加入博采中心</a></td>
          </tr>
        </table>
</td>
</tr>
</table>    <br>
 <table width="96%" align="center" cellspacing="10" bgcolor="#E7E3E4" >
 <tr>
        <td bgcolor="#FFFFFF">
	 <table width="96%" align="center" >
          <tr>
            <td align="center"><span class="article_title">使用Java中的Date和Calendar类</span></td>
          </tr>
          <tr>
            <td align="right">2004年 12月02日</td>
          </tr>
          <tr>
            <td class="article_content"><table border="0" width="92%"><tr><td align="center" colspan="3"><h2>使用Java中的Date和Calendar类</h2></td></tr><tr><td width="30%">&nbsp;</td><td align="center" width="30%">作者:转载</td><td align="right">&nbsp;</td></tr><tr><td colspan="3" height="15">&nbsp;</td></tr><tr><td align="left" colspan="3">Java&#160;语言的Calendar(日历),Date(日期),&#160;和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分.&#160;日期是商业逻辑计算一个关键的部分.&#160;所有的开发者都应该能够计算未来的日期,&#160;定制日期的显示格式,&#160;并将文本数据解析成日期对象.&#160;我们写了两篇文章,&#160;这是第一篇,&#160;我们将大概的学习日期,&#160;日期格式,&#160;日期的解析和日期的计算.<br /><br /><br />我们将讨论下面的类:<br /><br />1、具体类(和抽象类相对)java.util.Date&#160;<br />2、抽象类java.text.DateFormat&#160;和它的一个具体子类,java.text.SimpleDateFormat&#160;<br />3、抽象类java.util.Calendar&#160;和它的一个具体子类,java.util.GregorianCalendar&#160;<br /><br />具体类可以被实例化,&#160;但是抽象类却不能.&#160;你首先必须实现抽象类的一个具体子类.<br /><br />Date&#160;类从Java&#160;开发包(JDK)&#160;1.0&#160;就开始进化,&#160;当时它只包含了几个取得或者设置一个日期数据的各个部分的方法,&#160;比如说月,&#160;日,&#160;和年.&#160;这些方法现在遭到了批评并且已经被转移到了Calendar类里去了,&#160;我们将在本文中进一步讨论它.&#160;这种改进旨在更好的处理日期数据的国际化格式.&#160;就象在JDK&#160;1.1中一样,&#160;Date&#160;类实际上只是一个包裹类,&#160;它包含的是一个长整型数据,&#160;表示的是从GMT(格林尼治标准时间)1970年,&#160;1&#160;月&#160;1日00:00:00这一刻之前或者是之后经历的毫秒数.<br /><br /><br />一、创建一个日期对象<br /><br />让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数的简单例子.&#160;这个时间通常被称为Java&#160;虚拟机(JVM)主机环境的系统时间.<br />import&#160;java.util.Date;<br /><br />public&#160;class&#160;DateExample1&#160;{<br />&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;main(String[]&#160;args)&#160;{<br />&#160;&#160;&#160;&#160;//&#160;Get&#160;the&#160;system&#160;date/time<br />&#160;&#160;&#160;&#160;Date&#160;date&#160;=&#160;new&#160;Date();<br /><br />&#160;&#160;&#160;&#160;System.out.println(date.getTime());<br />&#160;&#160;&#160;&#160;}<br />}<br /><br />在星期六,&#160;2001年9月29日,&#160;下午大约是6:50的样子,&#160;上面的例子在系统输出设备上显示的结果是&#160;1001803809710.&#160;在这个例子中,值得注意的是我们使用了Date&#160;构造函数创建一个日期对象,&#160;这个构造函数没有接受任何参数.&#160;而这个构造函数在内部使用了System.currentTimeMillis()&#160;方法来从系统获取日期.<br /><br />那么,&#160;现在我们已经知道了如何获取从1970年1月1日开始经历的毫秒数了.&#160;我们如何才能以一种用户明白的格式来显示这个日期呢?&#160;在这里类java.text.SimpleDateFormat&#160;和它的抽象基类&#160;java.text.DateFormat&#160;就派得上用场了.<br /><br /><br />二、日期数据的定制格式<br /><br />假如我们希望定制日期数据的格式,&#160;比方星期六-9月-29日-2001年.&#160;下面的例子展示了如何完成这个工作:<br /><br />import&#160;java.text.SimpleDateFormat;<br />import&#160;java.util.Date;<br /><br />public&#160;class&#160;DateExample2&#160;{<br /><br />&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;main(String[]&#160;args)&#160;{<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SimpleDateFormat&#160;bartDateFormat&#160;=<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;new&#160;SimpleDateFormat(&quot;EEEE-MMMM-dd-yyyy&quot;);<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Date&#160;date&#160;=&#160;new&#160;Date();<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(bartDateFormat.format(date));<br />&#160;&#160;&#160;&#160;}<br />}<br /><br />只要通过向SimpleDateFormat&#160;的构造函数传递格式字符串&quot;EEE-MMMM-dd-yyyy&quot;,&#160;我们就能够指明自己想要的格式.&#160;你应该可以看见,&#160;格式字符串中的ASCII&#160;字符告诉格式化函数下面显示日期数据的哪一个部分.&#160;EEEE是星期,&#160;MMMM是月,&#160;dd是日,&#160;yyyy是年.&#160;字符的个数决定了日期是如何格式化的.传递&quot;EE-MM-dd-yy&quot;会显示&#160;Sat-09-29-01.&#160;请察看Sun&#160;公司的Web&#160;站点获取日期格式化选项的完整的指示.<br /><br /><br />三、将文本数据解析成日期对象<br /><br />假设我们有一个文本字符串包含了一个格式化了的日期对象,&#160;而我们希望解析这个字符串并从文本日期数据创建一个日期对象.&#160;我们将再次以格式化字符串&quot;MM-dd-yyyy&quot;&#160;调用SimpleDateFormat类,&#160;但是这一次,&#160;我们使用格式化解析而不是生成一个文本日期数据.&#160;我们的例子,&#160;显示在下面,&#160;将解析文本字符串&quot;9-29-2001&quot;并创建一个值为001736000000&#160;的日期对象.<br /><br />例子程序:<br /><br />import&#160;java.text.SimpleDateFormat;<br />import&#160;java.util.Date;<br /><br />public&#160;class&#160;DateExample3&#160;{<br /><br />&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;main(String[]&#160;args)&#160;{<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Create&#160;a&#160;date&#160;formatter&#160;that&#160;can&#160;parse&#160;dates&#160;of<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;the&#160;form&#160;MM-dd-yyyy.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SimpleDateFormat&#160;bartDateFormat&#160;=<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;new&#160;SimpleDateFormat(&quot;MM-dd-yyyy&quot;);<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Create&#160;a&#160;string&#160;containing&#160;a&#160;text&#160;date&#160;to&#160;be&#160;parsed.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;String&#160;dateStringToParse&#160;=&#160;&quot;9-29-2001&quot;;<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try&#160;{<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Parse&#160;the&#160;text&#160;version&#160;of&#160;the&#160;date.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;We&#160;have&#160;to&#160;perform&#160;the&#160;parse&#160;method&#160;in&#160;a<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;try-catch&#160;construct&#160;in&#160;case&#160;dateStringToParse<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;does&#160;not&#160;contain&#160;a&#160;date&#160;in&#160;the&#160;format&#160;we&#160;are&#160;expecting.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Date&#160;date&#160;=&#160;bartDateFormat.parse(dateStringToParse);<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Now&#160;send&#160;the&#160;parsed&#160;date&#160;as&#160;a&#160;long&#160;value<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;to&#160;the&#160;system&#160;output.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(date.getTime());<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;catch&#160;(Exception&#160;ex)&#160;{<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(ex.getMessage());<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />&#160;&#160;&#160;&#160;}<br />}<br />&#160;<br /><br />五、使用标准的日期格式化过程<br /><br />既然我们已经可以生成和解析定制的日期格式了,&#160;让我们来看一看如何使用内建的格式化过程.&#160;方法&#160;DateFormat.getDateTimeInstance()&#160;让我们得以用几种不同的方法获得标准的日期格式化过程.&#160;在下面的例子中,&#160;我们获取了四个内建的日期格式化过程.&#160;它们包括一个短的,&#160;中等的,&#160;长的,&#160;和完整的日期格式.<br /><br />import&#160;java.text.DateFormat;<br />import&#160;java.util.Date;<br /><br />public&#160;class&#160;DateExample4&#160;{<br /><br />&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;main(String[]&#160;args)&#160;{<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Date&#160;date&#160;=&#160;new&#160;Date();<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat&#160;shortDateFormat&#160;=<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.getDateTimeInstance(<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.SHORT,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.SHORT);<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat&#160;mediumDateFormat&#160;=<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.getDateTimeInstance(<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.MEDIUM,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.MEDIUM);<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat&#160;longDateFormat&#160;=<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.getDateTimeInstance(<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.LONG,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.LONG);<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat&#160;fullDateFormat&#160;=<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.getDateTimeInstance(<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.FULL,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.FULL);<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(shortDateFormat.format(date));<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(mediumDateFormat.format(date));<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(longDateFormat.format(date));<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(fullDateFormat.format(date));<br />&#160;&#160;&#160;&#160;}<br />}<br /><br /><br /><br />注意我们在对&#160;getDateTimeInstance的每次调用中都传递了两个值.&#160;第一个参数是日期风格,&#160;而第二个参数是时间风格.&#160;它们都是基本数据类型int(整型).&#160;考虑到可读性,&#160;我们使用了DateFormat&#160;类提供的常量:&#160;SHORT,&#160;MEDIUM,&#160;LONG,&#160;和&#160;FULL.&#160;要知道获取时间和日期格式化过程的更多的方法和选项,&#160;请看Sun&#160;公司Web&#160;站点上的解释.<br /><br />运行我们的例子程序的时候,&#160;它将向标准输出设备输出下面的内容:<br />9/29/01&#160;8:44&#160;PM<br />Sep&#160;29,&#160;2001&#160;8:44:45&#160;PM<br />September&#160;29,&#160;2001&#160;8:44:45&#160;PM&#160;EDT<br />Saturday,&#160;September&#160;29,&#160;2001&#160;8:44:45&#160;PM&#160;EDT<br /><br /><br />六、Calendar&#160;类<br /><br />我们现在已经能够格式化并创建一个日期对象了,&#160;但是我们如何才能设置和获取日期数据的特定部分呢,&#160;比如说小时,&#160;日,&#160;或者分钟?&#160;我们又如何在日期的这些部分加上或者减去值呢?&#160;答案是使用Calendar&#160;类.&#160;就如我们前面提到的那样,&#160;Calendar&#160;类中的方法替代了Date&#160;类中被人唾骂的方法.<br /><br />假设你想要设置,&#160;获取,&#160;和操纵一个日期对象的各个部分,&#160;比方一个月的一天或者是一个星期的一天.&#160;为了演示这个过程,&#160;我们将使用具体的子类&#160;java.util.GregorianCalendar.&#160;考虑下面的例子,&#160;它计算得到下面的第十个星期五是13号.&#160;<br /><br />import&#160;java.util.GregorianCalendar;<br />import&#160;java.util.Date;<br />import&#160;java.text.DateFormat;<br /><br />public&#160;class&#160;DateExample5&#160;{<br /><br />&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;main(String[]&#160;args)&#160;{<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat&#160;dateFormat&#160;=<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DateFormat.getDateInstance(DateFormat.FULL);<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Create&#160;our&#160;Gregorian&#160;Calendar.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GregorianCalendar&#160;cal&#160;=&#160;new&#160;GregorianCalendar();<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Set&#160;the&#160;date&#160;and&#160;time&#160;of&#160;our&#160;calendar<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;to&#160;the&#160;system&#39;s&#160;date&#160;and&#160;time<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cal.setTime(new&#160;Date());<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(&quot;System&#160;Date:&#160;&quot;&#160;+<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dateFormat.format(cal.getTime()));<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Set&#160;the&#160;day&#160;of&#160;week&#160;to&#160;FRIDAY<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cal.set(GregorianCalendar.DAY_OF_WEEK,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;GregorianCalendar.FRIDAY);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(&quot;After&#160;Setting&#160;Day&#160;of&#160;Week&#160;to&#160;Friday:&#160;&quot;&#160;+<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dateFormat.format(cal.getTime()));<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int&#160;friday13Counter&#160;=&#160;0;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while&#160;(friday13Counter&#160;&lt;=&#160;10)&#160;{<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Go&#160;to&#160;the&#160;next&#160;Friday&#160;by&#160;adding&#160;7&#160;days.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cal.add(GregorianCalendar.DAY_OF_MONTH,&#160;7);<br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;If&#160;the&#160;day&#160;of&#160;month&#160;is&#160;13&#160;we&#160;have<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;another&#160;Friday&#160;the&#160;13th.<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(cal.get(GregorianCalendar.DAY_OF_MONTH)&#160;==&#160;13)&#160;{<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;friday13Counter++;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(dateFormat.format(cal.getTime()));<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />&#160;&#160;&#160;&#160;}<br />}<br /><br /><br /><br />在这个例子中我们作了有趣的

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -