| 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 utilslib; | 5 part of utilslib; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * General purpose date/time utilities. | 8 * General purpose date/time utilities. |
| 9 */ | 9 */ |
| 10 class DateUtils { | 10 class DateUtils { |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 } | 148 } |
| 149 } | 149 } |
| 150 | 150 |
| 151 // TODO(jmesserly): this is a workaround for unimplemented DateTime.weekday | 151 // TODO(jmesserly): this is a workaround for unimplemented DateTime.weekday |
| 152 // Code inspired by v8/src/date.js | 152 // Code inspired by v8/src/date.js |
| 153 static int getWeekday(DateTime dateTime) { | 153 static int getWeekday(DateTime dateTime) { |
| 154 final unixTimeStart = new DateTime(1970, 1, 1, 0, 0, 0, 0); | 154 final unixTimeStart = new DateTime(1970, 1, 1, 0, 0, 0, 0); |
| 155 int msSince1970 = dateTime.difference(unixTimeStart).inMilliseconds; | 155 int msSince1970 = dateTime.difference(unixTimeStart).inMilliseconds; |
| 156 int daysSince1970 = msSince1970 ~/ Duration.MILLISECONDS_PER_DAY; | 156 int daysSince1970 = msSince1970 ~/ Duration.MILLISECONDS_PER_DAY; |
| 157 // 1970-1-1 was Thursday | 157 // 1970-1-1 was Thursday |
| 158 return ((daysSince1970 + DateTime.THU) % DateTime.DAYS_IN_WEEK); | 158 return ((daysSince1970 + DateTime.THURSDAY) % DateTime.DAYS_IN_WEEK); |
| 159 } | 159 } |
| 160 | 160 |
| 161 /** Formats a time in H:MM A format */ | 161 /** Formats a time in H:MM A format */ |
| 162 // TODO(jmesserly): should get 12 vs 24 hour clock setting from the locale | 162 // TODO(jmesserly): should get 12 vs 24 hour clock setting from the locale |
| 163 static String toHourMinutesString(Duration duration) { | 163 static String toHourMinutesString(Duration duration) { |
| 164 assert(duration.inDays == 0); | 164 assert(duration.inDays == 0); |
| 165 int hours = duration.inHours; | 165 int hours = duration.inHours; |
| 166 String a; | 166 String a; |
| 167 if (hours >= 12) { | 167 if (hours >= 12) { |
| 168 a = 'pm'; | 168 a = 'pm'; |
| 169 if (hours != 12) { | 169 if (hours != 12) { |
| 170 hours -= 12; | 170 hours -= 12; |
| 171 } | 171 } |
| 172 } else { | 172 } else { |
| 173 a = 'am'; | 173 a = 'am'; |
| 174 if (hours == 0) { | 174 if (hours == 0) { |
| 175 hours += 12; | 175 hours += 12; |
| 176 } | 176 } |
| 177 } | 177 } |
| 178 String twoDigits(int n) { | 178 String twoDigits(int n) { |
| 179 if (n >= 10) return "${n}"; | 179 if (n >= 10) return "${n}"; |
| 180 return "0${n}"; | 180 return "0${n}"; |
| 181 } | 181 } |
| 182 String mm = | 182 String mm = |
| 183 twoDigits(duration.inMinutes.remainder(Duration.MINUTES_PER_HOUR)); | 183 twoDigits(duration.inMinutes.remainder(Duration.MINUTES_PER_HOUR)); |
| 184 return "${hours}:${mm} ${a}"; | 184 return "${hours}:${mm} ${a}"; |
| 185 } | 185 } |
| 186 } | 186 } |
| OLD | NEW |