83c64018创建于 2025年12月12日历史提交
/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import type { AsyncCallback } from '@ohos.base';
import { BusinessError } from '@ohos.base';

export default namespace systemDateTime {

  const SYSTEM_ERROR: int = 401

  loadLibraryWithPermissionCheck("systemdatetime_ani", "@ohos.systemDateTime")

  export function getCurrentTime(isNano: boolean, callback: AsyncCallback<number>): void {
    let p1 = taskpool.execute(getTime, isNano)
    p1.then((e :Any) => {
      let error = new BusinessError<void>
      error.code = 0
      callback(error, e as number)
    });
  }

  export function getCurrentTime(callback: AsyncCallback<number>): void {
    let p1 = taskpool.execute(getTime)
    p1.then((e :Any) => {
      let error = new BusinessError<void>
      error.code = 0
      callback(error, e as number)
    });
  }

  export function getCurrentTime(isNano?: boolean): Promise<number> {
    let p = new Promise<number>((resolve: (value: number) => void, reject: (error: Error) => void): void => {
      let p1 = taskpool.execute(getTime, isNano);
      p1.then((e: Any): void => {
        resolve(e as number);
      });
    });
    return p
  }

  export native function getTime(isNanoseconds?: boolean): number;
  export native function getTimezoneSync(): string;

  export function getTimezone(callback: AsyncCallback<string>): void{
    let p1 = taskpool.execute(getTimezoneSync)
    p1.then((e :Any) => {
      let s = e as string
      let error = new BusinessError<void>
      if (s === "") {
        error.code = SYSTEM_ERROR
      } else {
        error.code = 0
      }
      callback(error, s)
    });
  }

  export function getTimezone(): Promise<string> {
    let p = new Promise<string>((resolve: (value: string) => void, reject: (error: Error) => void): void => {
      let p1 = taskpool.execute(getTimezoneSync);
      p1.then((e: Any): void => {
        let s = e as string
        if (s === "") {
          let error = new BusinessError<void>
          error.code = SYSTEM_ERROR
          reject(error)
        } else {
          resolve(s);
        }
      });
    });
    return p
  }
}