2009-09-15 15 views
10

Mamy aplikację, w której użytkownik musi wpisać datę, której wartość nie przekracza 30 dni od bieżącej daty (daty, w której użytkownik korzysta z aplikacji). Jest to aplikacja Flash, dlatego potrzebuję sposobu na dodanie 30 dni do bieżącej daty i uzyskanie właściwej daty. Coś jak w JavaScript:Dodaj dni do daty w ActionScript

myDate.setDate(myDate.getDate()+30); 

Lub w języku C#:

DateTime.Now.Add(30); 

Czy istnieje coś takiego w ActionScript?

Odpowiedz

27

Podczas gdy inne odpowiedzi będzie działać im na pewno, to jest tak proste, jak to robi:

var dte:Date = new Date(); 
dte.date += 30; 
//the date property is the day of the month, so on Sept. 15 2009 it will be 15 

To będzie nawet zwiększyć miesiąca, jeśli to konieczne i również rok. Możesz to zrobić także z właściwościami miesiąca i roku.

+1

To świetnie! Chcę tylko podkreślić, że działa to tylko w AS3 –

+1

To prawda. Pamiętaj również, że właściwość miesiąca ma wartość 0. Tak więc styczeń to miesiąc 0, a grudzień to miesiąc 11. –

1

Piszę kod ze szczytu mojej głowy, bez kompilowania go, ale użyłbym getTime(). Coś jak:

var today : Date = new Date(); 
var futureDate : Date = new Date(); 
futureDate.setTime(today.getTime() + (1000 * 60 * 60 * 24 * 30)); 

1000 * 60 * 60 * 24 * 30 = ms * sekund * minut * godziny * Days

sens?

3

My TimeSpan class może okazać się przydatny tutaj (to jest port .NET System.TimeSpan):

var now : Date = new Date(); 
var threeDaysTime : Date = TimeSpan.fromDays(3).add(now); 
+0

Dzięki, inne przykłady tylko dodaje dni, ale nie zwiększy miesiąc. – Mark

5

proponuję, aby spojrzeć tutaj: How can you save time by using the built in Date class?.

Powinno być coś takiego:

var date:Date = new Date(); 
date.setDate(date.date + 30); 
+1

date.date - właściwości są rozróżniane wielkości liter. – Virusescu

+0

Prawidłowo, zaktualizowałem kod. Nigdy nie lubiłem konwencji nazewnictwa actionscript;) –

2

@Zerata

Dodawanie milisekund bezpośrednio nie będzie działać, jeśli daty są po drugiej oszczędzając światła dziennego zmian ...

Można jednak dodać sekund bezpośrednio: datę

var: Data = Nowa data(); data.seconds + = 86400; => działa to, nawet jeśli daty dotyczą całej zmiany DLS.

Maurice