OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart.core; | 5 part of dart.core; |
6 | 6 |
7 /** | 7 /** |
8 * An instant in time, such as July 20, 1969, 8:18pm GMT. | 8 * An instant in time, such as July 20, 1969, 8:18pm GMT. |
9 * | 9 * |
10 * Create a DateTime object by using one of the constructors | 10 * Create a DateTime object by using one of the constructors |
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
573 DateTime add(Duration duration) { | 573 DateTime add(Duration duration) { |
574 int ms = millisecondsSinceEpoch; | 574 int ms = millisecondsSinceEpoch; |
575 return new DateTime.fromMillisecondsSinceEpoch( | 575 return new DateTime.fromMillisecondsSinceEpoch( |
576 ms + duration.inMilliseconds, isUtc: isUtc); | 576 ms + duration.inMilliseconds, isUtc: isUtc); |
577 } | 577 } |
578 | 578 |
579 /** | 579 /** |
580 * Returns a new [DateTime] instance with [duration] subtracted from [this]. | 580 * Returns a new [DateTime] instance with [duration] subtracted from [this]. |
581 * | 581 * |
582 * DateTime today = new DateTime.now(); | 582 * DateTime today = new DateTime.now(); |
583 * DateTime sixtyDaysAgo = today.subtract(new Duration(days: 60)); | 583 * DateTime sixtyDaysAgo = today.subtract(new Duration(days: 30)); |
| 584 * |
| 585 * Notice that duration being subtracted is actually 30 * 24 * 60 * 60 seconds |
| 586 * and if that crosses a daylight saving time change, the resulting `DateTime` |
| 587 * won't have the same time of day as `today`, and may not actually hit the |
| 588 * calendar date 30 days earlier. Be careful when working with dates in local |
| 589 * time. |
584 */ | 590 */ |
585 DateTime subtract(Duration duration) { | 591 DateTime subtract(Duration duration) { |
586 int ms = millisecondsSinceEpoch; | 592 int ms = millisecondsSinceEpoch; |
587 return new DateTime.fromMillisecondsSinceEpoch( | 593 return new DateTime.fromMillisecondsSinceEpoch( |
588 ms - duration.inMilliseconds, isUtc: isUtc); | 594 ms - duration.inMilliseconds, isUtc: isUtc); |
589 } | 595 } |
590 | 596 |
591 /** | 597 /** |
592 * Returns a [Duration] with the difference between [this] and [other]. | 598 * Returns a [Duration] with the difference between [this] and [other]. |
593 * | 599 * |
594 * DateTime berlinWallFell = new DateTime(1989, DateTime.NOVEMBER, 9); | 600 * DateTime berlinWallFell = new DateTime.utc(1989, DateTime.NOVEMBER, 9); |
595 * DateTime dDay = new DateTime(1944, DateTime.JUNE, 6); | 601 * DateTime dDay = new DateTime.utc(1944, DateTime.JUNE, 6); |
596 * | 602 * |
597 * Duration difference = berlinWallFell.difference(dDay); | 603 * Duration difference = berlinWallFell.difference(dDay); |
598 * assert(difference.inDays == 16592); | 604 * assert(difference.inDays == 16592); |
| 605 * |
| 606 * The difference is measured in seconds and fractions of seconds. |
| 607 * The difference above counts the number of fractional seconds between |
| 608 * midnight at the beginning of those dates. |
| 609 * If the dates above had been in local time, not UTC, then the difference |
| 610 * between two midnights may not be a multiple of 24 hours due to daylight |
| 611 * saving differences. |
| 612 * |
| 613 * For example, in Australia, similar code using local time instead of UTC: |
| 614 * |
| 615 * DateTime berlinWallFell = new DateTime(1989, DateTime.NOVEMBER, 9); |
| 616 * DateTime dDay = new DateTime(1944, DateTime.JUNE, 6); |
| 617 * Duration difference = berlinWallFell.difference(dDay); |
| 618 * assert(difference.inDays == 16592); |
| 619 * |
| 620 * will fail because the difference is actually 16591 days and 23 hours, and |
| 621 * [Duration.inDays] only returns the number of whole days. |
599 */ | 622 */ |
600 | |
601 Duration difference(DateTime other) { | 623 Duration difference(DateTime other) { |
602 int ms = millisecondsSinceEpoch; | 624 int ms = millisecondsSinceEpoch; |
603 int otherMs = other.millisecondsSinceEpoch; | 625 int otherMs = other.millisecondsSinceEpoch; |
604 return new Duration(milliseconds: ms - otherMs); | 626 return new Duration(milliseconds: ms - otherMs); |
605 } | 627 } |
606 | 628 |
607 external DateTime._internal(int year, | 629 external DateTime._internal(int year, |
608 int month, | 630 int month, |
609 int day, | 631 int day, |
610 int hour, | 632 int hour, |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
700 * In accordance with ISO 8601 | 722 * In accordance with ISO 8601 |
701 * a week starts with Monday, which has the value 1. | 723 * a week starts with Monday, which has the value 1. |
702 * | 724 * |
703 * DateTime moonLanding = DateTime.parse("1969-07-20 20:18:00"); | 725 * DateTime moonLanding = DateTime.parse("1969-07-20 20:18:00"); |
704 * assert(moonLanding.weekday == 7); | 726 * assert(moonLanding.weekday == 7); |
705 * assert(moonLanding.weekday == DateTime.SUNDAY); | 727 * assert(moonLanding.weekday == DateTime.SUNDAY); |
706 * | 728 * |
707 */ | 729 */ |
708 external int get weekday; | 730 external int get weekday; |
709 } | 731 } |
OLD | NEW |