在JavaScript中计算日期
我目前正在计算一个JavaScript中的自定义日期,我的脑袋开始伤害它的思考。 我有一个倒数计时钟,是在星期二下午12点开始的。 使用Keith Wood的jQuery倒计时插件,我可以正常使用倒计时功能,但在计算每月的其他星期二并在当天重置时需要帮助。
所有帮助一如既往地受到高度赞赏。
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
请查找日期库的附加链接以获取自定义计算日期和时间函数。
要使用它的客户端,请下载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
如果星期一的第一天是星期日,那么星期三的日期是2015年6月15日
DateLibrary.getRelativeDate(iDate,
{operationType: "Date_of_Weekday_in_Week",
startDayOfWeek:"Sunday",returnDayOfWeek:"Wednesday"}) // Output : Wed Jun 17 2015 00:00:00
如果第一周的星期五是星期五,那么在2015年6月15日的第三季度的第二个星期的第二周的星期二作为日期之一。
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
有一个RFC 2445重复规则的JavaScript实现: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这意味着星期二(由于星期二)每周(由于间隔)星期(由于频率)。
链接地址: http://www.djcxy.com/p/18763.html上一篇: Calculating Date in JavaScript
下一篇: What are the Xms and Xmx parameters when starting JVMs?