2010-06-23 28 views

Trả lời

9

Bạn có thể sử dụng ngày constructor cho việc này. Đối số đầu tiên cho hàm tạo của Date mất một năm hoặc một dấu thời gian. Bạn có thể sử dụng thuộc tính Date.time để nhận dấu thời gian từ một đối tượng ngày tháng. Khi bạn có dấu thời gian, bạn có thể thêm/bớt một số giây từ nó và sau đó chuyển nó đến new Date(timestamp) và bạn có được một ngày hoàn toàn mới đại diện cho dấu thời gian mới.

Chỉnh sửa; Là một người bình luận chỉ ra, thao tác thời gian có thể không phải là cách tốt nhất để đi. Nhưng bạn vẫn có thể sử dụng ngày constructor như sau:

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

Các ngày constructor là đủ thông minh để đối phó với các giá trị tiêu cực, hoặc giá trị lớn hơn 11.

+0

ngày toán là phức tạp hơn nhiều so với chuyển đổi để Secon ds và cộng/trừ. Bạn phải mất thời gian trong ngày, ngày mỗi tháng, năm nhuận, múi giờ, và đôi khi có ngữ cảnh khác nhau. –

+0

Có, nhưng trong trường hợp tháng đó không phải là khó khăn. – splash

+0

Ngay cả trong trường hợp tháng có thể khó khăn :) Khi 2 - 1 = 2 khi thực hiện các phép toán với ngày tháng trong ActionScript http://www.jabbypanda.com/blog/2011/09/when-2- 1-khi-làm-math-hoạt động-với-ngày-in-actionscript – JabbyPanda

0

Tôi không tin rằng có số học Ngày được tích hợp sẵn. Ngay cả các official adobe documentation for the Date class tạo ra toán học ngày từ đầu khi sử dụng nó.

Hãy xem liên kết ở trên. Tài liệu này tạo ra một lớp DateMath với các phương thức tĩnh để thực hiện loại điều bạn muốn. Cho rằng, tôi không chắc tại sao họ không làm là một phần của tiêu chuẩn, nhưng đó là cách nó được. Tôi muốn đề nghị sao chép nó từ đó và mở rộng trên đó.

3

Thử thư viện nguồn mở DateUtils.

Tôi sử dụng nó rộng rãi trong Lịch Flextras và nó hoạt động rất tốt. Tôi khá chắc chắn có một phương pháp DateAdd. Để có được một ngày 3 tháng trước đó, bạn chỉ có thể thêm một tiêu cực 3.

http://flexdateutils.riaforge.org/

0

Sử dụng này:

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; 
Các vấn đề liên quan