Показать сообщение отдельно
Старый 14.05.2014, 10:44
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
а вот еще эстетические вариации: один раз генерим список дат и из него потом дергаем что потребуется
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class Main extends Sprite
	{
 
		public function Main():void
		{
 
			var d1:Date = new Date(2014, 3, 29);
			var d2:Date = new Date(2014, 4, 11);
 
			DateList.init(2000, 2030);
 
			trace("список : " + DateList.getRange(d1, d2));
			trace("всего: " + DateList.getRange(d1, d2).length);
			trace(" в апреле 2014: " + DateList.getMonthRange(d1, d2, 2014, 3).length);
			trace(" в мае 2014: " + DateList.getMonthRange(d1, d2, 2014, 4).length);
			trace(" в июне 2014: " + DateList.getMonthRange(d1, d2, 2014, 5).length);
 
		}
 
	}
 
}
 
//===============//
class DateList
{
	public static const list:Array = [];
	public static const day:int = 24 * 60 * 60 * 1000;
 
	public static function init(y1:int, y2:int):void
	{
		var d1:Date = new Date(y1);
		var d2:Date = new Date(y2, 11, 31);
 
		while (d1.time <= d2.time)
		{
			list.push(dateToString(d1));
			d1.time += day;
		}
	}
	public static function dateToString(d:Date):String
	{
		return d.getDate() + "-" + d.getMonth() + "-" + d.getFullYear()
	}
	// список дней диапазона d1..d2
	public static function getRange(d1:Date, d2:Date):Array
	{
		var i1:int = list.indexOf(dateToString(d1));
		var i2:int = list.indexOf(dateToString(d2)) + 1;
		return list.slice(i1, i2);
	}
	// список дней диапазона d1..d2, попадающих в year.month
	public static function getMonthRange(d1:Date, d2:Date, year:int, month:int):Array
	{
 
		var r1:Date = new Date(year, month);
		var r2:Date = new Date(year, month + 1, 0);
		if (r1 < d1) r1 = d1;
		if (r2 > d2) r2 = d2;
 
		return getRange(r1, r2);
	}
 
}