• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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}