1/** 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15import common from "../data/commonData"; 16import HiLog from "./HiLog"; 17// Time constant 18const ONE_MINUTE_IN_MILLISECOND = 60000; 19const ONE_HOUR_IN_MILLISECOND = 3600000; 20 21const TAG = "DateUtil"; 22 23export default { 24 25 /** 26 * Converts the timestamp of an item to a time (for the SMS message list). 27 * 28 * @param messageItem 29 * @param is24HourTime 30 * @return 31 */ 32 convertDateFormatForItem(messageItem, is24HourTime) { 33 let now = new Date(); 34 let currentDate = { 35 timeOfNow: now.getTime(), 36 yearOfNow: now.getFullYear(), 37 monthOfNow: now.getMonth() + 1, 38 dayOfNow: now.getDate() 39 }; 40 let timeMillisecond = messageItem.timeMillisecond; 41 messageItem.time = this.convertTimeStampToTime(timeMillisecond, currentDate, is24HourTime); 42 }, 43 44 /** 45 * Converting a Timestamp to a Time (for SMS List) 46 * 47 * @param timeStampFromDb Timeline to be converted 48 * @param currentDate Current Time 49 * @param is24HourTime 50 * @return 51 */ 52 convertTimeStampToTime(timeStampFromDb, currentDate, is24HourTime) { 53 let sms = new Date(timeStampFromDb); 54 let timeStampOfSms = sms.getTime(); 55 let yearOfSms = sms.getFullYear(); 56 let monthOfSms = sms.getMonth() + 1; 57 let dayOfSms = sms.getDate(); 58 let hoursOfSms = sms.getHours(); 59 let minutesOfSms = sms.getMinutes(); 60 let diff = currentDate.timeOfNow - timeStampOfSms; 61 if (currentDate.yearOfNow == yearOfSms && currentDate.monthOfNow == monthOfSms 62 && currentDate.dayOfNow == dayOfSms) { 63 if (diff < ONE_MINUTE_IN_MILLISECOND) { 64 return $r("app.string.justNow"); 65 } else if (diff < ONE_HOUR_IN_MILLISECOND) { 66 return $r("app.string.minAgo", Math.floor(diff / ONE_MINUTE_IN_MILLISECOND)); 67 } else { 68 let hoursOfSmsStr: string = '' + hoursOfSms; 69 let minutesOfSmsStr: string = '' + minutesOfSms; 70 if (hoursOfSms < 10) { 71 hoursOfSmsStr = "0" + hoursOfSms; 72 } 73 if (minutesOfSms < 10) { 74 minutesOfSmsStr = "0" + minutesOfSms; 75 } 76 if (is24HourTime) { 77 return $r("app.string.hourAndMinute", hoursOfSmsStr, minutesOfSmsStr); 78 } else { 79 return this.timeTwelveHourSystem(hoursOfSms, minutesOfSmsStr, hoursOfSmsStr); 80 } 81 } 82 } else if (currentDate.yearOfNow == yearOfSms && currentDate.monthOfNow == monthOfSms 83 && currentDate.dayOfNow - dayOfSms == 1) { 84 return $r("app.string.yesterday"); 85 } else if (currentDate.yearOfNow == yearOfSms) { 86 return $r("app.string.monthDay", monthOfSms, dayOfSms); 87 } else { 88 return $r("app.string.yearMonthDay", yearOfSms, monthOfSms, dayOfSms); 89 } 90 }, 91 92 timeTwelveHourSystem(hoursOfSms, minutesOfSmsStr, hoursOfSmsStr) { 93 let time: Resource = null; 94 if (hoursOfSms <= 12) { 95 time = this.morningTimeTwelveHourSystem(hoursOfSms, minutesOfSmsStr, hoursOfSmsStr); 96 } else { 97 time = this.afterTimeTwelveHourSystem(hoursOfSms, minutesOfSmsStr, hoursOfSmsStr); 98 } 99 return time; 100 }, 101 102 morningTimeTwelveHourSystem(hoursOfSms, minutesOfSmsStr, hoursOfSmsStr) { 103 let time: Resource = null; 104 // 12-hour clock 105 if (hoursOfSms < 1) { 106 time = $r("app.string.postMidnight", 12 + '', minutesOfSmsStr); 107 } 108 if (hoursOfSms >= 1 && hoursOfSms < 4) { 109 time = $r("app.string.beforeDawn", hoursOfSmsStr, minutesOfSmsStr); 110 } 111 if (hoursOfSms >= 4 && hoursOfSms < 6) { 112 time = $r("app.string.earlyMorning", hoursOfSmsStr, minutesOfSmsStr); 113 } 114 if (hoursOfSms >= 6 && hoursOfSms < 9) { 115 time = $r("app.string.morning", hoursOfSmsStr, minutesOfSmsStr); 116 } 117 if (hoursOfSms >= 9 && hoursOfSms < 11) { 118 time = $r("app.string.forenoon", hoursOfSmsStr, minutesOfSmsStr); 119 } 120 if (hoursOfSms >= 11 && hoursOfSms <= 12) { 121 time = $r("app.string.preNoon", hoursOfSms + '', minutesOfSmsStr); 122 } 123 return time; 124 }, 125 126 afterTimeTwelveHourSystem(hoursOfSms, minutesOfSmsStr, hoursOfSmsStr) { 127 let time: Resource = null; 128 if (hoursOfSms > 12 && hoursOfSms < 13) { 129 time = $r("app.string.postNoon", hoursOfSms + '', minutesOfSmsStr); 130 } 131 if (hoursOfSms >= 13 && hoursOfSms < 17) { 132 time = $r("app.string.afternoon", (hoursOfSms - 12) + '', minutesOfSmsStr); 133 } 134 if (hoursOfSms >= 17 && hoursOfSms < 19) { 135 time = $r("app.string.towardEvening", (hoursOfSms - 12) + '', minutesOfSmsStr); 136 } 137 if (hoursOfSms >= 19 && hoursOfSms < 23) { 138 time = $r("app.string.evening", (hoursOfSms - 12) + '', minutesOfSmsStr); 139 } 140 if (hoursOfSms >= 23) { 141 time = $r("app.string.preMidnight", (hoursOfSms - 12) + '', minutesOfSmsStr); 142 } 143 return time; 144 }, 145 146 /** 147 * Converting Time 148 * @param messageItem 149 * @param is24HourTime 150 * @param that 151 * @return 152 */ 153 convertTimeStampToDateWeek(messageItem, is24HourTime) { 154 let now = new Date(); 155 let yearOfNow = now.getFullYear(); 156 let monthOfNow = now.getMonth() + 1; 157 let dayOfNow = now.getDate(); 158 let timeMillisecond = messageItem.timeMillisecond; 159 this.convertTimeStampToDate(messageItem, timeMillisecond, yearOfNow, monthOfNow, dayOfNow); 160 }, 161 162 /** 163 * Converts the timestamp form to the date form. 164 */ 165 convertTimeStampToDate(messageItem, timeStampFromDb, yearOfNow, monthOfNow, dayOfNow) { 166 let date: Resource = null; 167 let sms = new Date(timeStampFromDb); 168 let yearOfSms = sms.getFullYear(); 169 let monthOfSms = sms.getMonth() + 1; 170 let dayOfSms = sms.getDate(); 171 let weekOfSms = sms.getDay(); 172 if (yearOfNow == yearOfSms && monthOfNow == monthOfSms && dayOfNow == dayOfSms) { 173 date = $r("app.string.recentDateToday", ''); 174 } else if (yearOfNow == yearOfSms && monthOfNow == monthOfSms && dayOfNow - dayOfSms == 1) { 175 date = $r("app.string.recentDateYesterday", ''); 176 } else if (yearOfNow == yearOfSms) { 177 date = $r("app.string.monthDayDate", monthOfSms, dayOfSms, ''); 178 } else { 179 date = $r("app.string.yearMonthDayDate", yearOfSms, monthOfSms, dayOfSms, ''); 180 } 181 messageItem.date = date; 182 messageItem.week = this.getWeek(weekOfSms); 183 }, 184 185 /** 186 * Get Week/Day of the Week 187 * @param day 188 * @param that 189 * @return 190 */ 191 getWeek(day) { 192 let week: Resource = null; 193 switch (day) { 194 case 0: 195 week = $r("app.string.Sunday"); 196 break; 197 case 1: 198 week = $r("app.string.Monday"); 199 break; 200 case 2: 201 week = $r("app.string.Tuesday"); 202 break; 203 case 3: 204 week = $r("app.string.Wednesday"); 205 break; 206 case 4: 207 week = $r("app.string.Thursday"); 208 break; 209 case 5: 210 week = $r("app.string.Friday"); 211 break; 212 case 6: 213 week = $r("app.string.Saturday"); 214 break; 215 216 } 217 return week; 218 }, 219 220 convertTimeStampDate(timeStampFromDb) { 221 let date : Resource = null; 222 let sms = new Date(Number(timeStampFromDb)); 223 let yearOfSms = sms.getFullYear(); 224 let monthOfSms = sms.getMonth() + 1; 225 let dayOfSms = sms.getDate(); 226 let weekOfSms = sms.getDay(); 227 date = $r("app.string.yearMonthDayDate", yearOfSms, monthOfSms, dayOfSms, ''); 228 // let time = this.convertTimeStampTime(timeStampFromDb, false); 229 // return date + " " + time; 230 return date; 231 }, 232 233 /** 234 * 235 * @param timeStampFromDb 236 * @param is24HourTime 237 * @param that 238 * @return 239 */ 240 convertTimeStampTime(timeStampFromDb, is24HourTime) { 241 let sms = new Date(Number(timeStampFromDb)); 242 let hoursOfSms = sms.getHours(); 243 let minutesOfSms = sms.getMinutes(); 244 let hoursOfSmsStr: string = hoursOfSms + ''; 245 let minutesOfSmsStr: string = minutesOfSms + ''; 246 if (hoursOfSms < 10) { 247 hoursOfSmsStr = "0" + hoursOfSms; 248 } 249 if (minutesOfSms < 10) { 250 minutesOfSmsStr = "0" + minutesOfSms; 251 } 252 if (is24HourTime) { 253 // 24-hour clock 254 return $r("app.string.hourAndMinute", hoursOfSmsStr, minutesOfSmsStr); 255 } 256 return this.timeTwelveHourSystem(hoursOfSms, minutesOfSmsStr, hoursOfSmsStr); 257 }, 258 259 fullDate(item) { 260 let timeOfSms: Resource = null; 261 let fullDate: Resource = null; 262 let sms = new Date(item.timeMillisecond); 263 let yearOfSms = sms.getFullYear(); 264 let monthOfSms = sms.getMonth() + 1; 265 let dayOfSms = sms.getDate(); 266 let hoursOfSms = sms.getHours(); 267 let minutesOfSms = sms.getMinutes(); 268 let hoursOfSmsStr: string = hoursOfSms + ''; 269 let minutesOfSmsStr: string = minutesOfSms + ''; 270 if (hoursOfSms > 12) { 271 hoursOfSmsStr = "" + (hoursOfSms - 12); 272 } 273 if (minutesOfSms < 10) { 274 minutesOfSmsStr = "0" + minutesOfSms; 275 } 276 if( hoursOfSms < 12) { 277 timeOfSms = $r("app.string.forenoon", hoursOfSmsStr, minutesOfSmsStr); 278 } else { 279 timeOfSms = $r("app.string.afternoon", hoursOfSmsStr, minutesOfSmsStr); 280 } 281 fullDate = $r("app.string.yearMonthDayDate", yearOfSms, monthOfSms, dayOfSms, ''); 282 item.fullDate = fullDate; 283 item.timeOfSms = timeOfSms; 284 } 285}