從oracle 數據庫讀取日期時間,並在網頁上打印萬年曆 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 從oracle 數據庫讀取日期時間,並在網頁上打印萬年曆 (http://www.webasp.net/article/22/21471.htm) |
| -- 作者:未知 -- 發佈日期: 2005-04-30 |
在core Java 那本書裡,在講類之前就將了一個打印一個月份中每天是星期幾的萬年曆程序.最近寫程序的時候終於要用到了.我花費了半天時間終於弄明白了GregorianCalendar類,並且通過網絡抓取oracle數據的時間,然後顯示在JSP 網頁上. 運行效果如下: 首先要在J2se裡面寫出萬年曆程序,作為練習: 1)星期日Calendar.SUNDAY =1 星期日為1,那麼星期幾就+1為以此類推! 打印月曆的程序: package moonsoft.j2se.testYueli; import java.util.*; public class TestYueli { public static void main(String [] args) { //建立一個GregorianCalendar 對像 GregorianCalendar d=new GregorianCalendar(); //獲得系統默認的日期的月份和日期所在的月第幾天 int month=d.get(Calendar.MONTH); int day=d.get(Calendar.DAY_OF_MONTH); //把d設置為當月第一天 d.set(Calendar.DAY_OF_MONTH, 1); //獲得第一天的是一星期的第幾天 int weekday=d.get(Calendar.DAY_OF_WEEK); System.out.println("SUN MON TUE WED THU FRI SAT"); for(int i=Calendar.SUNDAY; i<weekday; i++) System.out.print(" "); //System.out.print(monthday); do { int days=d.get(Calendar.DAY_OF_MONTH); if(days<10) System.out.print(" "); System.out.print(days); if(days==day) System.out.print("*"); else System.out.print(" "); if(weekday==Calendar.SATURDAY) System.out.println(); d.add(Calendar.DAY_OF_MONTH, 1); weekday=d.get(Calendar.DAY_OF_WEEK); }while(d.get(Calendar.MONTH)==month); } } 2)注意GregorianCalendar calendar=new(year, month-1,year); month-1! 在Calendar 0代表一月!!! 然後再寫oracle抓取到JSP 頁面的程序: <%@ page contentType="text/html;charset=Big5"%><%@ page import="java.util.*"%><%@ page import="java.sql.*"%><%@ page import="javax.sql.*"%><%@ page import="javax.naming.*"%><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Big5"> <title>社團活動</title> <style type="text/css"><!--.style1 {color: #FFFFFF}--> </style> </head> <% request.setCharacterEncoding("big5"); String name=(String)session.getAttribute("name"); String queryDate=" select to_char(systimestamp, 'YYYY-MM-DD HH24:MM:SS') from dual "; int day=1; int month=3; int year=2005; Connection conn=null; try{ Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("jdbc/asdbCoreDS"); conn=ds.getConnection(); PreparedStatement ps=conn.prepareStatement(queryDate); ResultSet rs=ps.executeQuery(); while(rs.next()){ String date=rs.getString(1); year=Integer.parseInt(date.substring(0,4)); month=Integer.parseInt(date.substring(5,7)); day=Integer.parseInt(date.substring(8,10)); out.println(year+"年"+month+"月"); } } catch(Exception e1){e1.printStackTrace();} finally{conn.close();} %> <body> <table width="100%" border="1" cellspacing="1" cellpadding="1"> <tr bgcolor="#0099FF"> <th scope="col"><span class="style1">SUN</span></th> <th scope="col"><span class="style1">MON</span></th> <th scope="col"><span class="style1">TUE</span></th> <th scope="col"><span class="style1">WED</span></th> <th scope="col"><span class="style1">THU</span></th> <th scope="col"><span class="style1">FRI</span></th> <th scope="col"><span class="style1">SAT</span></th> </tr> <tr> <% GregorianCalendar d=new GregorianCalendar(year, month-1 , day); int monthDay=d.get(Calendar.DAY_OF_MONTH); int monthNumber=d.get(Calendar.MONTH); d.set(Calendar.DAY_OF_MONTH, 1); int weekDay=d.get(Calendar.DAY_OF_WEEK); for(int i=Calendar.SUNDAY; i<weekDay; i++) {%><td height="45"> </td><%} do{ int monthDays=d.get(Calendar.DAY_OF_MONTH); %><td height="45"><%=monthDays%></td><% if(weekDay==Calendar.SATURDAY) out.println("</tr><tr>"); d.add(Calendar.DAY_OF_MONTH, 1); weekDay=d.get(Calendar.DAY_OF_WEEK); }while(d.get(Calendar.MONTH)==monthNumber); %> </table> </body></html> 其實如果掌握了GregorianCalendar 類,寫這個不是很難,呵呵,下一步要做的是要向日曆裡添加活動信息. 每遇到一個沒有寫過的技術問題,都覺得很困難,想放棄,可是我不能!我能做的只是堅持,還有培養自己的興趣, 當你寫過這個程序,就覺得,如此而已啊,哈哈...... 自己每天都進步一些,這種感覺,真好! |
| webasp.net |