125c1cde8Sopenharmony_ci/*
225c1cde8Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
325c1cde8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
425c1cde8Sopenharmony_ci * you may not use this file except in compliance with the License.
525c1cde8Sopenharmony_ci * You may obtain a copy of the License at
625c1cde8Sopenharmony_ci *
725c1cde8Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
825c1cde8Sopenharmony_ci *
925c1cde8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1025c1cde8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1125c1cde8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1225c1cde8Sopenharmony_ci * See the License for the specific language governing permissions and
1325c1cde8Sopenharmony_ci * limitations under the License.
1425c1cde8Sopenharmony_ci */
1525c1cde8Sopenharmony_ci
1625c1cde8Sopenharmony_ci#ifndef TELEPHONY_TIME_UTIL_H
1725c1cde8Sopenharmony_ci#define TELEPHONY_TIME_UTIL_H
1825c1cde8Sopenharmony_ci
1925c1cde8Sopenharmony_ci#include <ctime>
2025c1cde8Sopenharmony_ci#include <cstring>
2125c1cde8Sopenharmony_ci
2225c1cde8Sopenharmony_cinamespace OHOS {
2325c1cde8Sopenharmony_cinamespace Telephony {
2425c1cde8Sopenharmony_civoid FormatDate(std::string &date, const tm *ltm)
2525c1cde8Sopenharmony_ci{
2625c1cde8Sopenharmony_ci    if (ltm != nullptr) {
2725c1cde8Sopenharmony_ci        int START_YEAR = 1900;
2825c1cde8Sopenharmony_ci        int DOUBLE_DIGIT = 10;
2925c1cde8Sopenharmony_ci        int year = START_YEAR + ltm->tm_year;
3025c1cde8Sopenharmony_ci        int month = 1 + ltm->tm_mon;
3125c1cde8Sopenharmony_ci        int day = ltm->tm_mday;
3225c1cde8Sopenharmony_ci        int hour = ltm->tm_hour;
3325c1cde8Sopenharmony_ci        int minute = ltm->tm_min;
3425c1cde8Sopenharmony_ci        int second = ltm->tm_sec;
3525c1cde8Sopenharmony_ci        date.append(std::to_string(year));
3625c1cde8Sopenharmony_ci        date.append("-");
3725c1cde8Sopenharmony_ci        if (month < DOUBLE_DIGIT) {
3825c1cde8Sopenharmony_ci            date.append("0");
3925c1cde8Sopenharmony_ci        }
4025c1cde8Sopenharmony_ci        date.append(std::to_string(month));
4125c1cde8Sopenharmony_ci        date.append("-");
4225c1cde8Sopenharmony_ci        if (day < DOUBLE_DIGIT) {
4325c1cde8Sopenharmony_ci            date.append("0");
4425c1cde8Sopenharmony_ci        }
4525c1cde8Sopenharmony_ci        date.append(std::to_string(day));
4625c1cde8Sopenharmony_ci        date.append(" ");
4725c1cde8Sopenharmony_ci        if (hour < DOUBLE_DIGIT) {
4825c1cde8Sopenharmony_ci            date.append("0");
4925c1cde8Sopenharmony_ci        }
5025c1cde8Sopenharmony_ci        date.append(std::to_string(hour));
5125c1cde8Sopenharmony_ci        date.append(":");
5225c1cde8Sopenharmony_ci        if (minute < DOUBLE_DIGIT) {
5325c1cde8Sopenharmony_ci            date.append("0");
5425c1cde8Sopenharmony_ci        }
5525c1cde8Sopenharmony_ci        date.append(std::to_string(minute));
5625c1cde8Sopenharmony_ci        date.append(":");
5725c1cde8Sopenharmony_ci        if (second < DOUBLE_DIGIT) {
5825c1cde8Sopenharmony_ci            date.append("0");
5925c1cde8Sopenharmony_ci        }
6025c1cde8Sopenharmony_ci        date.append(std::to_string(second));
6125c1cde8Sopenharmony_ci    }
6225c1cde8Sopenharmony_ci}
6325c1cde8Sopenharmony_ci
6425c1cde8Sopenharmony_civoid GetCurrentTime(std::string &date)
6525c1cde8Sopenharmony_ci{
6625c1cde8Sopenharmony_ci    time_t *DEFAULT_TIMER = 0;
6725c1cde8Sopenharmony_ci    time_t now = time(DEFAULT_TIMER);
6825c1cde8Sopenharmony_ci    if (now == -1) {
6925c1cde8Sopenharmony_ci        return;
7025c1cde8Sopenharmony_ci    }
7125c1cde8Sopenharmony_ci    struct tm tm = { 0 };
7225c1cde8Sopenharmony_ci    struct tm *ltm = localtime_r(&now, &tm);
7325c1cde8Sopenharmony_ci    if (ltm == nullptr) {
7425c1cde8Sopenharmony_ci        return;
7525c1cde8Sopenharmony_ci    }
7625c1cde8Sopenharmony_ci    FormatDate(date, ltm);
7725c1cde8Sopenharmony_ci}
7825c1cde8Sopenharmony_ci
7925c1cde8Sopenharmony_civoid GetTimeOfThirty(std::string &date)
8025c1cde8Sopenharmony_ci{
8125c1cde8Sopenharmony_ci    int64_t THIRTY_DAYS = 2592000;
8225c1cde8Sopenharmony_ci    time_t *DEFAULT_TIMER = 0;
8325c1cde8Sopenharmony_ci    time_t now = time(DEFAULT_TIMER) - THIRTY_DAYS;
8425c1cde8Sopenharmony_ci    date = std::to_string(now);
8525c1cde8Sopenharmony_ci}
8625c1cde8Sopenharmony_ci} // namespace Telephony
8725c1cde8Sopenharmony_ci} // namespace OHOS
8825c1cde8Sopenharmony_ci#endif // TELEPHONY_TIME_UTIL_H
89