12-4 伅P

使用 JScript 內建的 Date 物件,我們可以對時間和日期進行各種處理。在下列範例中,我們使用伺服器端的 JScript 和用戶端的 JavaScript 來比較兩者時間的不同:

Example(time01.asp):

上述範例的原始檔如下:

原始檔(time01.asp):(灰色區域按兩下即可拷貝)
<%@language=jscript%>
<%title="伺服器和用戶端的時間比較"%>
<!--#include file="head.inc"-->
<hr>

<%
today=new Date();
Response.Write("伺服器的時間:<font color=green>"+today.toLocaleString()+"</font>");
%>
<br>
<script>
today=new Date();
document.writeln("用戶端的時間:<font color=red>"+today.toLocaleString()+"</font>");
</script>

<hr>
<!--#include file="foot.inc"-->

在上述範例中,我們用在伺服器和用戶端的程式碼是完全一樣的,都是使用 new Date() 來先產生一個日期物件,再使用 toLocaleString() 的方法來轉換成當地的日期字串。(由此也可以看出 JavaScript/JScript 在用戶端和伺服器的共通功能。)

在下列範例中,我們依照伺服器時間的不同,而回傳不同的問候語:

Example(time03.asp):

上述範例的原始檔如下:

原始檔(time03.asp):(灰色區域按兩下即可拷貝)
<%@language=jscript%>
<%title="依照伺服器時間來回傳不同的問候語"%>
<!--#include file="head.inc"-->
<hr>

<% today=new Date(); %>
伺服器端的現在時間:<font color=green><%=today.toLocaleString()%></font><p>
<%
time=today.getHours();
if ((0<=time) && (time<2))
	greeting = "已經凌晨了,該睡了!";
else if ((2<=time) && (time<4))
	greeting = "您要撐到天亮嗎?快睡吧!"
else if ((4<=time) && (time<6))
	greeting = "天快亮了! 您是早起的鳥兒,還是晚睡的蟲兒?"
else if ((6<=time) && (time<8))
	greeting = "您早! 一大清早您就在研究ASP,精神令人感動!"
else if ((8<=time) && (time<10))
	greeting = "您早! 早上研究ASP的效果最好,您說是嗎?"
else if ((10<=time) && (time<12))
	greeting = "吃飯時間快到了,您餓了嗎?"
else if ((12<=time) && (time<13))
	greeting = "吃飽了嗎?別忘了吃飯喔!"
else if ((13<=time) && (time<14))
	greeting = "午安...午睡時間,別吵嘛!"
else if ((14<=time) && (time<16))
	greeting = "午安! 您午覺睡夠嗎?別睡著了!"
else if ((16<=time) && (time<18))
	greeting = "運動時間,別工作了!"
else if ((18<=time) && (time<20))
	greeting = "您吃過晚餐了嗎?該吃飯了!"
else if ((20<=time) && (time<22))
	greeting = "晚安! 您吃過晚餐了嗎?"
else if ((22<=time) && (time<24))
	greeting = "晚安! 該睡覺了!"
else
	greeting = "您好!"
%>
<font size=+2><%= greeting %></font>

<hr>
<!--#include file="foot.inc"-->

有關時間物件的方法,在伺服器和用戶端的 JavaScript 的用法是一致的,可見下列範例:

Example(time04.asp):

上述範例的原始檔如下:

原始檔(time04.asp):(灰色區域按兩下即可拷貝)
<%@language=jscript%>
<%title="JScript 的 Date 物件的各種方法"%>
<!--#include file="head.inc"-->
<hr>

<%
cmd=new Array();
i=0;
cmd[i++]="getDate()";
cmd[i++]="getDay()";
cmd[i++]="getHours()";
cmd[i++]="getMinutes()";
cmd[i++]="getMonth()";
cmd[i++]="getSeconds()";
cmd[i++]="getTime()";
cmd[i++]="getTimezoneOffset()";
cmd[i++]="getFullYear()";
cmd[i++]="toGMTString()";
cmd[i++]="toLocaleString()";

today=new Date();
for (i=0; i<cmd.length; i++){
	thisCmd="today."+cmd[i];
	Response.write(thisCmd+" ===> "+eval(thisCmd)+"<br>");
}
%>

<hr>
<!--#include file="foot.inc"-->

Hint
在伺服器端的 JScript 完全沒有用戶端 DOM (Document Object Model) 的概念,這是要特別注意之處。

以上範例都是使用 JScript 於 ASP 環境之中。若有需要,我們也可以使用 VBScript 於 ASP 環境,以時間和日期的處理而言,VBScript 也提供了一些內建函數,例如 time、date、now 等,用以傳回現在的時間和日期。例如,若要顯示現在時間,可用

<%=time%>
若要顯示現在日期,可用
<%=date%>
若要使用 VBScript 來達成前述「依照伺服器時間的不同而回傳不同的問候語」的功能,範例可見 time03_vbs.asp,在此不再贅述。
JScript 程式設計與應用:用於伺服器端的 ASP 環境