1/* 2 * Copyright (c) 2024 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 */ 15 16#include "time_util.h" 17#include <sys/time.h> 18 19namespace OHOS { 20namespace Security { 21namespace AccessToken { 22namespace { 23static constexpr int64_t ONE_SECOND_MILLISECONDS = 1000; 24} 25int64_t TimeUtil::GetCurrentTimestamp() 26{ 27 struct timeval t; 28 gettimeofday(&t, NULL); 29 int64_t timestamp = t.tv_sec * ONE_SECOND_MILLISECONDS + t.tv_usec / ONE_SECOND_MILLISECONDS; 30 31 return timestamp; 32} 33 34bool TimeUtil::IsTimeStampsSameMinute(int64_t timeStamp1, int64_t timeStamp2) 35{ 36 struct tm t1 = {0}; 37 time_t time1 = static_cast<time_t>(timeStamp1 / 1000); 38 // localtime is not thread safe, localtime_r first param unit is second, timestamp unit is ms, so divided by 1000 39 localtime_r(&time1, &t1); 40 struct tm t2 = {0}; 41 time_t time2 = static_cast<time_t>(timeStamp2 / 1000); 42 localtime_r(&time2, &t2); 43 44 return t1.tm_min == t2.tm_min; 45} 46} // namespace AccessToken 47} // namespace Security 48} // namespace OHOS 49