2010-06-23 5 views
8

플렉스에서 날짜 공제 및 추가를 시도하지만이를 수행 할 방법을 찾지 못했습니다.플렉스 날짜 공제 및 추가 방법

예 : public var dateNow : Date = new Date();

어떻게 날짜를 3 개월 더 빨리 얻을 수 있습니까?

감사합니다 !!!

답변

9

당신은이를 위해 날짜 생성자를 사용하여 추가 할 수 있습니다. Date의 생성자에 대한 첫 번째 인수는 연도 또는 타임 스탬프 중 하나를 취합니다. Date.time 속성을 사용하여 날짜 개체에서 타임 스탬프를 가져올 수 있습니다. 타임 스탬프가 있으면 시간을 초 단위로 추가/감산 한 다음 new Date(timestamp)으로 전달하면 새로운 타임 스탬프를 나타내는 새로운 날짜가됩니다.

편집; 댓글 작성자가 지적했듯이, 시간 조작이 최선의 방법은 아닐 수도 있습니다. 다음과 같이하지만 당신은 여전히 ​​날짜 생성자를 사용할 수 있습니다

var now:Date = new Date(); 
var threeMonthsAgo = new Date(now.fullYear, 
           now.month - 3, 
           now.date, 
           now.hour, 
           now.minute, 
           now.second, 
           now.millisecond); 

날짜 생성자가 음의 값을 처리하기에 충분히 스마트, 또는보다 큰 11

+0

날짜 수학은 훨씬 더 복잡 SECON로 변환보다 ds 및 더하기/빼기. 시간대, 월간, 윤년, 시간대, 경우에 따라 다른 상황을 고려해야합니다. –

+0

예, 그렇지만 월간에 그렇게 어렵지 않습니다. – splash

+0

달의 경우에도 어려울 수 있습니다. ActionScript로 날짜가있는 수학 연산을 수행 할 때 2 - 1 = 2 일 때 http://www.jabbypanda.com/blog/2011/09/when-2- 1-when-doing-math-operations-with-dates-in-actionscript – JabbyPanda

0

저는 내장 산술 연산이 있다고 생각하지 않습니다. official adobe documentation for the Date class조차도 그것을 사용할 때 처음부터 수학을 생성합니다.

위의 링크를 살펴보십시오. 이 문서에서는 정적 메서드로 DateMath 클래스를 만들어 원하는 일을 처리합니다. 그렇다면 왜 그들이 만들지 않은 것이 표준의 일부인지는 모르지만 그게 그 방법입니다. 거기에서 복사하고 확장하는 것이 좋습니다.

3

DateUtils 오픈 소스 라이브러리를 사용해보십시오.

나는 Flextras 달력에서 광범위하게 사용하며 훌륭하게 작동합니다. 꽤 DateAdd 메서드가 있다고 확신합니다. 3개월 이전 날짜를 얻으려면, 당신은 부정적인 3.

http://flexdateutils.riaforge.org/

0

사용 오는 사랑이 :

var dObj:Date = new Date(); 

DateField_Now.formatString = DateField_LastWeek.formatString = "YYYY-MM-DD"; 

DateField_Now.selectedDate = dObj; 

dObj["date"] += 7; 
DateField_LastWeek.selectedDate = dObj;