在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?