import 'dart:math';

import 'package:flutter_habit/common/I18N.dart';

class ConvertUtils {
  static int offset = DateTime.now().timeZoneOffset.inMilliseconds;

  static String packString(Object? s) {
    return s == null ? I18N.of("无数据") : s.toString();
  }

  static String md5Encode(String s) {
    // return md5.convert(Utf8Encoder().convert("ha${s}bit")).toString();
    return "";
  }

  static double localDaysSinceEpoch(DateTime dateTime) {
    return (dateTime.millisecondsSinceEpoch + offset) / 86400000;
  }

  static DateTime dateTimeOfLocalDaysSinceEpoch(double daysSinceEpoch) {
    return DateTime.fromMillisecondsSinceEpoch(
        (daysSinceEpoch * 86400000).round() - offset);
  }

  static DateTime dateOfDateTime(DateTime dateTime) {
    return DateTime(dateTime.year, dateTime.month, dateTime.day);
  }

  static String timeFormMillisecondsSinceEpoch(int millisecondsSinceEpoch) {
    return DateTime.fromMillisecondsSinceEpoch(millisecondsSinceEpoch)
        .toString()
        .substring(11, 16);
  }

  static double hourFormMilliseconds(int milliseconds) {
    return milliseconds / 1000 / 60 / 60;
  }

  static double hourFormMillisecondsSinceEpoch(int millisecondsSinceEpoch) {
    DateTime time = DateTime.fromMillisecondsSinceEpoch(millisecondsSinceEpoch);
    return Duration(
                hours: time.hour, minutes: time.minute, seconds: time.second)
            .inMilliseconds /
        1000 /
        60 /
        60;
  }

  static double fixedDouble(double value, int fix) {
    int fixNum = pow(10, fix) as int;
    return (value * fixNum).round() / fixNum;
  }
}