1/* 2 * Copyright (c) 2025 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 16import type { AsyncCallback } from '@ohos.base'; 17import { BusinessError } from '@ohos.base'; 18 19export default namespace systemDateTime { 20 21 const SYSTEM_ERROR: number = 401 22 23 loadLibrary("systemdatetime_ani") 24 25 export function getCurrentTime(isNano: boolean, callback: AsyncCallback<number>): void { 26 let p1 = taskpool.execute(getTime, isNano) 27 p1.then((e :NullishType) => { 28 let error = new BusinessError<void> 29 error.code = 0 30 callback(error, e as number) 31 }); 32 } 33 34 export function getCurrentTime(callback: AsyncCallback<number>): void { 35 let p1 = taskpool.execute(getTime) 36 p1.then((e :NullishType) => { 37 let error = new BusinessError<void> 38 error.code = 0 39 callback(error, e as number) 40 }); 41 } 42 43 export function getCurrentTime(isNano?: boolean): Promise<number> { 44 let p = new Promise<number>((resolve: (value: number) => void, reject: (error: Object) => void): void => { 45 let p1 = taskpool.execute(getTime, isNano); 46 p1.then((e: NullishType): void => { 47 resolve(e as number); 48 }); 49 }); 50 return p 51 } 52 53 export native function getTime(isNanoseconds?: boolean): number; 54 export native function getTimezoneSync(): string; 55 56 export function getTimezone(callback: AsyncCallback<string>): void{ 57 let p1 = taskpool.execute(getTimezoneSync) 58 p1.then((e :NullishType) => { 59 let s = e as string 60 let error = new BusinessError<void> 61 if (s === "") { 62 error.code = SYSTEM_ERROR 63 } else { 64 error.code = 0 65 } 66 callback(error, s) 67 }); 68 } 69 70 export function getTimezone(): Promise<string> { 71 let p = new Promise<string>((resolve: (value: string) => void, reject: (error: Object) => void): void => { 72 let p1 = taskpool.execute(getTimezoneSync); 73 p1.then((e: NullishType): void => { 74 let s = e as string 75 if (s === "") { 76 let error = new BusinessError<void> 77 error.code = SYSTEM_ERROR 78 reject(error) 79 } else { 80 resolve(s); 81 } 82 }); 83 }); 84 return p 85 } 86} 87