142103316Sopenharmony_ci/*
242103316Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
342103316Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
442103316Sopenharmony_ci * you may not use this file except in compliance with the License.
542103316Sopenharmony_ci * You may obtain a copy of the License at
642103316Sopenharmony_ci *
742103316Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
842103316Sopenharmony_ci *
942103316Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1042103316Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1142103316Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1242103316Sopenharmony_ci * See the License for the specific language governing permissions and
1342103316Sopenharmony_ci * limitations under the License.
1442103316Sopenharmony_ci */
1542103316Sopenharmony_ci
1642103316Sopenharmony_ciconst twelve = 12;
1742103316Sopenharmony_ci
1842103316Sopenharmony_ci/*
1942103316Sopenharmony_ci * date package tool class
2042103316Sopenharmony_ci */
2142103316Sopenharmony_ciexport default class DateAndTimeUtil {
2242103316Sopenharmony_ci  constructor() {
2342103316Sopenharmony_ci  }
2442103316Sopenharmony_ci
2542103316Sopenharmony_ci  /**
2642103316Sopenharmony_ci   *
2742103316Sopenharmony_ci   * Get the current time
2842103316Sopenharmony_ci   */
2942103316Sopenharmony_ci  now() {
3042103316Sopenharmony_ci    const datetime = new Date();
3142103316Sopenharmony_ci    const hours = datetime.getHours();
3242103316Sopenharmony_ci    const minutes = datetime.getMinutes();
3342103316Sopenharmony_ci    return this.concatTime(hours, minutes);
3442103316Sopenharmony_ci  }
3542103316Sopenharmony_ci
3642103316Sopenharmony_ci  /**
3742103316Sopenharmony_ci   *
3842103316Sopenharmony_ci   * Get the current time
3942103316Sopenharmony_ci   */
4042103316Sopenharmony_ci  nowWithSeconds() {
4142103316Sopenharmony_ci    const datetime = new Date();
4242103316Sopenharmony_ci    const hours = datetime.getHours();
4342103316Sopenharmony_ci    const minutes = datetime.getMinutes();
4442103316Sopenharmony_ci    const seconds = datetime.getMilliseconds()
4542103316Sopenharmony_ci    console.info('now: ' + hours + ':' + minutes + ':' + seconds)
4642103316Sopenharmony_ci    var now = this.concatTimeWithSeconds(hours, minutes, seconds);
4742103316Sopenharmony_ci    console.info('now concat: ' + now);
4842103316Sopenharmony_ci    return now;
4942103316Sopenharmony_ci  }
5042103316Sopenharmony_ci
5142103316Sopenharmony_ci  /**
5242103316Sopenharmony_ci   * format
5342103316Sopenharmony_ci   * @param value
5442103316Sopenharmony_ci   * @return
5542103316Sopenharmony_ci   */
5642103316Sopenharmony_ci  fill(value) {
5742103316Sopenharmony_ci    return (value > 9 ? '' : '0') + value;
5842103316Sopenharmony_ci  }
5942103316Sopenharmony_ci
6042103316Sopenharmony_ci  /**
6142103316Sopenharmony_ci   * concat date
6242103316Sopenharmony_ci   * @param year m d
6342103316Sopenharmony_ci   * @return
6442103316Sopenharmony_ci   */
6542103316Sopenharmony_ci  concatDate(year, month, date) {
6642103316Sopenharmony_ci    return year + this.year + month + this.month + date + this.day;
6742103316Sopenharmony_ci  }
6842103316Sopenharmony_ci
6942103316Sopenharmony_ci  concatTime(hours, minutes) {
7042103316Sopenharmony_ci    return `${this.fill(hours)}:${this.fill(minutes)}`;
7142103316Sopenharmony_ci  }
7242103316Sopenharmony_ci
7342103316Sopenharmony_ci  concatTimeWithSeconds(hours, minutes, milliseconds) {
7442103316Sopenharmony_ci    return `${this.fill(hours)}:${this.fill(minutes)}:${this.fill(milliseconds)}`;
7542103316Sopenharmony_ci  }
7642103316Sopenharmony_ci
7742103316Sopenharmony_ci  /**
7842103316Sopenharmony_ci   * Turn to 24-hour clock
7942103316Sopenharmony_ci   * @param str
8042103316Sopenharmony_ci   * @return
8142103316Sopenharmony_ci   */
8242103316Sopenharmony_ci  transform24(str) {
8342103316Sopenharmony_ci    const timeFlag = str.substr(0, 2);
8442103316Sopenharmony_ci    if (timeFlag == this.morning) {
8542103316Sopenharmony_ci      const h = str.substr(2).split(':')[0];
8642103316Sopenharmony_ci      if (h == twelve) {
8742103316Sopenharmony_ci        const time = '0' + ':' + str.substr(2).split(':')[1];
8842103316Sopenharmony_ci        return time;
8942103316Sopenharmony_ci      } else {
9042103316Sopenharmony_ci        return h + ':' + str.substr(2).split(':')[1];
9142103316Sopenharmony_ci      }
9242103316Sopenharmony_ci    } else {
9342103316Sopenharmony_ci      const h = str.substr(2).split(':')[0];
9442103316Sopenharmony_ci      const h1 = parseInt(h) + twelve;
9542103316Sopenharmony_ci      if (h != twelve) {
9642103316Sopenharmony_ci        const time = h1 + ':' + str.substr(2).split(':')[1];
9742103316Sopenharmony_ci        return time;
9842103316Sopenharmony_ci      }
9942103316Sopenharmony_ci    }
10042103316Sopenharmony_ci  }
10142103316Sopenharmony_ci
10242103316Sopenharmony_ci  /**
10342103316Sopenharmony_ci   * Turn to 12-hour clock
10442103316Sopenharmony_ci   * @param str
10542103316Sopenharmony_ci   * @return
10642103316Sopenharmony_ci   */
10742103316Sopenharmony_ci  transform12(str) {
10842103316Sopenharmony_ci    const hours = str.substring(0, str.indexOf(':'));
10942103316Sopenharmony_ci    const minutes = str.split(':')[1];
11042103316Sopenharmony_ci    if (hours < twelve) {
11142103316Sopenharmony_ci      return this.morning.concat(`${hours}:${minutes}`);
11242103316Sopenharmony_ci    }
11342103316Sopenharmony_ci    if (hours == twelve) {
11442103316Sopenharmony_ci      return this.afternoon.concat(`${hours}:${minutes}`);
11542103316Sopenharmony_ci    } else {
11642103316Sopenharmony_ci      const reduceHours = parseInt(hours) - twelve;
11742103316Sopenharmony_ci      return this.afternoon.concat(`${reduceHours}:${minutes}`);
11842103316Sopenharmony_ci    }
11942103316Sopenharmony_ci  }
12042103316Sopenharmony_ci}
121