我目前正在计算JavaScript中的一个自定义日期,我的脑袋开始伤害它的思考。我有一个倒数计时钟,是在星期二下午12点开始的。使用Keith Wood的jQuery倒计时插件,我可以正常使用倒计时功能,但在计算每月的其他星期二并在当天重置时需要帮助。在JavaScript中计算日期
所有帮助一如既往地受到高度赞赏。
Thansk提前
我目前正在计算JavaScript中的一个自定义日期,我的脑袋开始伤害它的思考。我有一个倒数计时钟,是在星期二下午12点开始的。使用Keith Wood的jQuery倒计时插件,我可以正常使用倒计时功能,但在计算每月的其他星期二并在当天重置时需要帮助。在JavaScript中计算日期
所有帮助一如既往地受到高度赞赏。
Thansk提前
我不得不做同样的事情(不是JS,但该算法是很相似)现在
,我开始之前,澄清我假定这是一件隔周发行的发生而不管一个月的长度,并且不在第二和第四个周二无论何时它最后发生的事情,这是更简单的解决
接过去,这一事件发生的日期(或者第一次出现的日期),我们将这个日期称为base
下面的代码
var base=new Date('date of first occurrence');
var one_day=1000*60*60*24; //length of day in ms
// assume we care about if the countdown should start today
// this may be different if you are building a calendar etc.
var date_to_check=new Date();
var diff_in_days=math.floor(date_to_check-base)/one_day);
var days_since_last_reset= diff_in_days%14;
if(days_since_last_reset == 0){
//date_to_check is the same day in the fortnightly cycle as base
//i.e. today at some point is when you'll want to show the timer
//If you only want to show the timer between certain times,
//add another check here
}else{
//next reset in (14 - days_since_last_reset) days from date_to_check
}
,或者在代码高尔夫式的版本:
if(Math.floor((new Date()-new Date('date of first occurrence'))/1000/60/60/24)%14 == 0)
//reset/start timer
有一个JavaScript实现的RFC 2445的循环规则:http://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/demos/calendar/rrule-cajita.js需要在同一目录下的一些文件。请参阅单元测试(http://code.google.com/p/google-caja/source/browse/trunk/tests/com/google/caja/demos/calendar/rrule_test.js)了解它如何工作的示例。
尝试使用它来解析RRULE:FREQ = WEEKLY; BYDAY = TU; INTERVAL = 2这意味着星期二(由于时间间隔)每周(由于间隔)星期二(由于频率)。
查看date.js库。它有几个日期分析助手,包括Date.today().next().tuesday()
(等等)。
请参阅Date Library的附加链接以获取自定义计算日期和时间函数。
要使用它的客户端,请下载index.js和assertHelper.js并将其包含在您的HTML中。
<script src="assertHelper.js"></script>
<script type="text/javascript" src="index.js"></script>
$(document).ready(function() {
DateLibrary.getDayOfWeek(new Date("2015-06-15"),{operationType:"Day_of_Week"}); // Output : Monday
}
您可以使用示例中给出的不同函数来获取自定义日期。
为了得到季的第一天从给定日期
DateLibrary.getRelativeDate(new Date("2015-06-15"),
{operationType:"First_Date",granularityType:"Quarters"}) // Output : Wed Apr 01 2015 00:00:00
如果一周的第一天是周日,将在周三什么约会,如果 给定的日期是15日2015年
DateLibrary.getRelativeDate(iDate,
{operationType: "Date_of_Weekday_in_Week",
startDayOfWeek:"Sunday",returnDayOfWeek:"Wednesday"}) // Output : Wed Jun 17 2015 00:00:00
六月
如果星期一的第一天是星期五,那么第3天的星期二是什么日期 含有2015年6月15日的第3季度的第2个月的星期作为 日期之一。
DateLibrary.getRelativeDate(new Date("2015-06-15"),
{operationType: "Date_of_Weekday_in_Year_for_Given_Quarter_and_Month_and_Week",
startDayOfWeek:"Friday",returnDayOfWeek:"Tuesday", QuarterOfYear:3, MonthOfQuarter:2, WeekOfMonth:3}) // Output : 18th Aug 2015
如果一周的第一天是星期二,什么周数在一年将 按照2015年6月15日的日期之一。
DateLibrary.getWeekNumber(new Date("2015-06-15"),
{operationType:"Week_of_Year",
startDayOfWeek:"Tuesday"}) // Output : 24
也有可用的时间差功能
DateLibrary.getDateDifference(new Date("2016-04-01"),new Date("2016-04-16"),
{granularityType: "days"}) //output 15
功能的转换数量TIMESTR
DateLibrary.getNumberToTimeStr("345", {delimiter: ":"}) //output 00:03:45
它还支持Julian日期转换
DateLibrary.julianToDate("102536") //output Fri Jun 20 2003 00:00:00
什么代码,你到目前为止? – qwertymk 2011-01-27 02:41:16
.getDay()函数可能有所帮助:http://www.w3schools.com/js/js_js_obj_date.asp – 2011-01-27 02:58:18
hi jnolte :)请尝试发布一些代码,它可能会帮助我们更快地解决您的问题。 TNX! :) – 2011-01-27 03:16:54