JavaScript添加日期函数
JavaScript Addition Date Functions
我真的不太了解核心JavaScript,只是一点jQuery。但是我知道jQuery对于我这里所需要的不是必需的:
我想使用getdate函数来查找服务器的星期几。然后添加一堆子句,如:
- 如果是星期一,则在日期上加6,并以MM/DD/YYYY格式返回日期。
- 如果是星期二,日期加5,返回MM/DD/YYYY格式的日期。
- 如果是星期三,则在日期上加4,并以MM/DD/YYYY格式返回日期。
以此类推,直到周日,它将添加0。
假设今天是星期一,它将返回1/8/2012在实际日期中,今天是星期天所以它会返回1/1/2012
然后我只想调用一个document.write
函数来写它返回到我的HTML文档中的MM/DD/YYYY。
getDay()返回星期几,星期日= 0,星期一= 1,等等。
假设今天是星期一,getDay()将返回1,这意味着daysToAdd将是5。
一旦我们知道我们想要添加多少天,我们就可以创建一个新的日期并添加这些天。我们通过获取以毫秒为单位的今天,然后加上以毫秒为单位的天数(daysToAdd)来实现这一点。
我们用24*60*60*1000(即一天中的毫秒数)将天转换为毫秒。
我将月加1,因为JavaScript返回基于0的月,但出于显示目的,我们希望将其格式化,以便例如一月是1而不是零。
function getEndOfWeek() {
var today = new Date();
var weekDay = today.getDay();
// if you want the week to start on Monday instead of Sunday uncomment the code below
//weekDay -= 1;
//if(weekDay < 0) {
// weekDay += 7;
//}
var daysToAdd = 6 - weekDay;
var newDate = new Date(today.getTime() + daysToAdd *24*60*60*1000);
var month = newDate.getMonth() + 1;
var day = newDate.getDate();
var year = newDate.getFullYear();
var formatedDate = month + "/" + day + "/" + year;
return formatedDate;
}
你可以在你的代码中这样实现,JavaScript:
$(function() {
$("#TheDate").html(getEndOfWeek());
});
你的HTML应该是这样的:
The week ends on <span id="TheDate"></span>.
可以在这里找到jsFiddle: jsFiddle
如果您想调整工作日,以便将星期一作为一周的开始,而不是星期日,您可以在获得工作日后执行以下操作:
weekDay -= 1;
if(weekDay < 0) {
weekDay += 7;
}
var day = 1000*60*60*24
, nextSunday = new Date(+new Date() + day*(7-((0|(+new Date()/day)%7-3)||7)));
alert(
(101+nextSunday.getMonth()).toString().substr(1) + '/' +
(100+nextSunday.getDate()).toString().substr(1) + '/' +
nextSunday.getFullYear()
)
至于在javascript中添加日期,我认为我的"DateExtensions"库做得很好。你可以在这里下载:
http://depressedpress.com/javascript-extensions/dp_dateextensions/一旦被引用,你可以调用"add()"作为任何有效日期的方法,并传递给它任何日期部分(秒,分钟,天,小时等)。假设"curDate"是一个有效的JavaScript日期对象你可以像这样添加5天:
newDate = curDate。添加(5天),
使用负值将减去:
newDate = curDate。添加(5天);
一旦你得到了你想要的日期,你可以使用库的dateFormat()方法来显示它,像这样:
curDate.dateFormat("MM/DD/YYYY");
链接有完整的文档。
星期的整数值
至于获得您想要的整数值,实际上比看起来更容易(并且您不需要"if",只需要一些数学运算)。date的getDay()方法返回星期几,其中星期日为"0",星期六为"6"。因此,从周日开始的一周,通常是:
0, 1, 2, 3, 4, 5, 6
首先,您想要反转该比例。这很容易通过减法完成,即从值中减去7(集合中成员的总数)。它给出了这个刻度:
7、6、5、4、3、2、1
我们越来越近了。你希望第一个值也是0。最简单的方法(我认为)是通过成员总数获得值的模数(余数)。所有这些基本上都是让"-7"为零,其余部分保持不变,给我们这个:
0、6、5、4、3、2、1
差不多做完了。最后,您不想要负数,因此您需要使用Math.abs()方法消除符号(获得绝对值),使我们得到所需的结果:
0、6、5、4、3、2、1
尽管说了这么多,实际的代码还是很紧凑的:
Math.abs ((cnt-7) % 7)
将其封装到原始示例中得到:
newDate = curDate.add (Math.abs (curDate.getDay() 7) % 7),"天"),
服务器Vs客户端
但是,请记住nnnnnn的评论:在JavaScript中,getDate()函数获取它正在运行的机器的当前日期/时间-在网页是客户端而不是服务器的情况下。
如果你真的是指客户给他们计时,那你就搞定了。但是,如果您确实需要服务器时间,那么这几乎是不可能的。如果你拥有服务器,那么设置一个规则将当前服务器包含在每个已完成请求的cookie中并不难(然后你可以使用我的cookie库,也在上面的站点上,访问信息!)
它更混乱,但取决于服务器,您也可以创建一个老式的服务器端包含,向每个页面添加一点JavaScript(最好在头中标记替换),将日期硬编码为全局变量。
你也可以创建一个返回当前服务器时间的web服务,但是与正在交付的数据相比,客户端开销是疯狂的。
如果服务器不是你的(你不能让所有者提供以上),那么唯一真正潜在的选择是做一个直接的http调用并检查http"日期"头。然而,与回报相比,这方面的开销是巨大的,但这确实是唯一的方法。任何这样的系统都必须非常灵活,因为任何特定的服务器都可能不返回日期头或不正确返回日期头。
即使它可以工作,也要明白您可能仍然没有获得"服务器"时间-或者至少不是您想要的服务器。在分层架构中,例如,应用服务器可能会渲染页面并将其交给web服务器返回-您将获得web服务器的时间,而不是应用服务器。任意数量的设备也可能重写报头(例如,通常使用专用SSL设备来卸载所有加密工作-这些设备通常会重写报头本身)。
很抱歉我说得太技术化了——JavaScript绝对是一个很少有"简单问题"的领域。, ^)
祝你好运!
- 比较从函数和生成的日期对象
- Chrome Javascript日期构造函数错误
- 新的日期函数javascript
- 从角度日期函数中删除时间
- 更新URL时使用Javascript函数显示日期
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 函数在日期选择器中选择日期之前触发
- 使用默认js函数的javascript中的日期的第二天
- 在CouchDB Map函数中发出日期时-对日期对象调用的内容
- DateTimePicker:函数从minDate maxDate添加删除日期
- 具有可变目标日期的倒计时javascript函数
- 日期选择器更改事件抛出”;TypeError:字符串不是函数;
- 在 JavaScript 中单击函数时两个日期类型输入之间的差异的代码
- 在 php 标题标签中添加日期函数
- 如何调用日期函数并在接下来的 6 天插槽中显示
- Javascript日期函数显示错误的日期
- 用于多个from输入的JQuery日期选择器函数
- 如何创建一个函数来检查日期是否为回文
- 如何防止JavaScript日期构造函数接受无效日期
- ECMAScript 5.1规范不正确?日期构造函数日期/时间格式解析为UTC