曲径通幽论坛

标题: Date 对象 [打印本页]

作者: beyes    时间: 2011-12-14 01:00
标题: Date 对象
由于 JavaScript 没有基本的日期数据类型,所以只能显式地创建 Date 对象,方法如下:
var today = new Date();
如果希望一开始时就设定特定日期或时间,那么可以直接指定:
[JavaScript] 纯文本查看 复制代码
<script type="text/javascript">
        var mydate = new Date( "13 Dec 2011 23:58:00" );
        document.write( mydate );
    </script>


运行后,可能会看到类似下面的信息(浏览器不同而显示结果稍有区别,这里是 Chrome 的输出):
Tue Dec 13 2011 23:58:00 GMT+0800 (中国标准时间)
上面 Date 中括号里的时间不同的国家有不同的顺序,中国的习惯是 YY/MM/DD ,美国的习惯是 MM/DD/YY,欧洲的习惯是 DD/MM/YY 。


如果使用简写的名字来指定月份(如 Jan,Dec 等),则可以指定任意的顺序:
[code=javascript]
var someDate = new Date( "13 Dec 2011" );
var someDate = new Date( "Dec 13 2011" );
var someDate = new Date( "2011 13 Dec" );[/mw_shl_code]



实际上,Date 对象还有许多参数:
var someDate = new Date( aYear, aMonth, aDate, anHour, aMinute, aSecond, aMillisecond )
注意,上面括号里的参数都分别用逗号隔开,而不是放在一对双引号里整个指定。如果按照上面的形式使用参数,那么就必须按照顺序逐个指定,比如可以:
var mydate = new Date( 2011, 11, 14, 23 );
而不能:
var mydate = new Date( 2011, 11, , 23 );


还有一个地方需要注意的是:JavaScript 是从 0 开始计算月份的,如果上面指定的是:
var mydate = new Date( 2011, 12, 13, 23 );
那么就会显示成:
Fri Jan 13 2012 23:00:00 GMT+0800 (中国标准时间)
这样就跳到 2012 年的 1 月份中去了。


测试代码
[JavaScript] 纯文本查看 复制代码
//创建一个新的 date 对象
    var mydate = new Date( "14 Dec 2011 0:21");
    
    //获取时间元素(分钟,年,月,日)
    document.write( "Minutes = " + mydate.getMinutes() + "<br>" );
    document.write( "Year = " + mydate.getFullYear() + "<br>" );    
    document.write( "Month = " + mydate.getMonth() + "<br>" );
    document.write( "Date = " + mydate.getDate() + "<br>" );


相应于 getMinutes() 中的 get 是获得分钟,那么要设置分钟则是 setMinutes(),设置天数是 setDate() 等等。



可以使用 toString() 方法将一个 Date 对象里的时间元素转换为字符串输出,如下面的测试代码:
[code=javascript]<script type="text/javascript">
    //提示用户输入一个时间
    var originalDate = prompt( "Enter a date (Day, Name of the Month, Year)", "31 Dec 2011" );
    
    //使用新的日期覆盖原始的日期
    var originalDate = new Date( originalDate );
    
    //提示用户输入需要增加的天数
    var addDays = Number( prompt( "Enter number of days to be added", "1" ) );
    
    //设置一个新的天数
    originalDate.setDate( originalDate.getDate() + addDays );
    
    document.write( originalDate.toString() );
    </script>[/mw_shl_code]
运行后在确认两个对话框中的内容后输出:
Sun Jan 01 2012 00:00:00 GMT+0800 (中国标准时间)
上面程序是为原始时间再增加一天,然后输出变更后的日期。

如果将上面的 toSring() 方法改成 toDateString() ,那么会产生好一个格式化好的字符串,比如:
Sun Jan 01 2012





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2