2010-06-12 148 views
0

什么是常见方法,以获得当前日历周获取当前日历周

+0

您是否试图获得本周的日期范围(周日@12:00-周六@ 11:59 PM)或周数? – 2010-06-12 14:49:48

+0

这已经在这里回答http://stackoverflow.com/questions/2362956/flex-how-to-get-week-of-year-for-a-date/2363000#2363000 – Amarghosh 2010-06-14 10:50:57

回答

1

重新设置问题以便您可以获得当年的日期编号可能是个好主意,如果必须的话,您可以将其用于更多基于日期的计算。这是最容易与INTS的静态数组和位运算的做...

public static var month_days:Array = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 

public static day_num(Date d):int 
{ 
    var cumulative_days:int = 0; 
    for (int i = 0; i < d.month; i++) 
    { 
    cumulative_days += month_days[i]; 
    } 
    cumulative_days += d.date; 

    if (add_leap_day(d)) cumulative_days++; 

    return cumulative_days; 
} 

public static week_num(Date d):int 
{ 
    var int day_num = day_num(d); 
    return Math.floor(day_num/7); 
} 

public static function add_leap_day(Date d):boolean 
{ 
    // I'll let you work this out for yourself 
    // bear in mind you don't just need to know whether it's a leap year... 
} 

当心的几件事情:

  • 贵上1月1日或日历星期开始的定义今年的第一个星期天?
  • 你对一年中的闲暇时间,特别是闰年做什么? (52x7!= 365)
  • 您对日历或财政年度感兴趣吗?
  • 一年的每周定义是否相同?有时圣诞节有两个星期或一个多月!

我结束了为财务日历和常规日历编写基于日期的算术函数库。如果您在用户拥有自己版本的日历的任何环境中工作,即任何财务应用程序,这都是一个棘手的问题。

0

这里是一个返回当前周的开始日期的另一个功能:

public static function getDayCount(year:int, month:int):int 
{ 
    var d:Date = new Date(year, month + 1, 0); 
    return d.getDate(); 
} 

public static function getThisWeekStartDate(date:Date):Date 
{ 
    var weekStartDate:Date; 

    var currentDateDay:Number = date.day; 
    if(currentDateDay == 0) 
    { 
     weekStartDate = new Date(date.fullYear, date.month, date.date); 
    } 
    else 
    { 
     var sDate:Number = date.date - currentDateDay; 
     if(sDate < 0) 
     { 
      var newWeekStartDate:Number = sDate + getDayCount(date.fullYear, date.month); 
      weekStartDate = new Date(date.fullYear, date.month-1, newWeekStartDate); 
     } 
     else 
     { 
      weekStartDate = new Date(date.fullYear, date.month, sDate); 
     } 
    } 

    return weekStartDate; 
} 

,您可以通过获得一周的结束日期:

var endDate:Date = new Date(startDate.fullYear, startDate.month, startDate.date); 
endDate.date += 6; 
+0

我想你错了,currentDateDay == 0实际上是星期天 – 2013-10-07 10:08:49

0
var today:Date = new Date(); 
var sunday:Date = new Date(today.fullYear, today.month, today.date - today.day); 
var saturday:Date = new Date(sunday.fullYear, sunday.month, sunday.date + 6); 
trace(sunday); 
trace(saturday); 

//Sun Oct 26 00:00:00 GMT+0800 2014 
//Sat Nov 1 00:00:00 GMT+0800 2014 
1

或者让你的手在org.casalib.util.DateUtil和使用方法getWeekOfTheYear(d:Date):uint

相关问题