Получить текущую календарную неделю - PullRequest
0 голосов
/ 12 июня 2010

Каков общий метод получения текущей календарной недели в ?

Ответы [ 4 ]

1 голос
/ 10 августа 2015

Или возьмите в свои руки org.casalib.util.DateUtil и используйте метод getWeekOfTheYear(d:Date):uint.

1 голос
/ 12 июня 2010

Это может быть хорошей идеей для пересмотра проблемы, чтобы вы могли получить номер дня в текущем году, и при необходимости вы сможете использовать его для дополнительных расчетов на основе дат. Это легче всего сделать с помощью статического массива целых чисел и небольшой арифметики ...

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 января или в первое воскресенье года?
  • Что вы делаете с свободными днями в году, особенно високосными? (52x7! = 365)
  • Вас интересует календарь или финансовый год?
  • Является ли определение недели одинаковым для каждой недели вашего года? Иногда у Рождества есть две недели или дополнительный месяц!

Я закончил писать целую библиотеку арифметических функций на основе дат для фискальных и обычных календарей. Это сложная проблема, если вы работаете в любой среде, где у вашего пользователя есть своя собственная версия календаря, то есть в любом финансовом приложении.

0 голосов
/ 29 октября 2014
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
0 голосов
/ 04 сентября 2012

Вот еще одна функция, которая возвращает дату начала текущей недели:

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;
...