using System;

namespace SGModule.Common.Helper {
    public static class TimeHelper {
        /// <summary>
        ///     将 Unix 时间戳转换为本地时间
        /// </summary>
        /// <param name="timestamp">时间戳（秒）</param>
        /// <returns>可读的本地时间字符串</returns>
        public static string ConvertToLocalTime(long timestamp) {
            // Unix 时间戳起始时间
            var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

            // 转换为本地时间
            var localTime = epoch.AddSeconds(timestamp).ToLocalTime();

            return localTime.ToString("yyyy-MM-dd HH:mm:ss");
        }

        /// <summary>
        ///     将 Unix 时间戳转换为 UTC 时间
        /// </summary>
        /// <param name="timestamp">时间戳（秒）</param>
        /// <returns>可读的 UTC 时间字符串</returns>
        public static string ConvertToUTCTime(long timestamp) {
            // Unix 时间戳起始时间
            var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

            // 转换为 UTC 时间
            var utcTime = epoch.AddSeconds(timestamp);

            return utcTime.ToString("yyyy-MM-dd HH:mm:ss");
        }

        public static string FormatTime(int totalSeconds) {
            if (totalSeconds < 60) {
                return $"{totalSeconds}s"; // 小于60秒，直接显示秒
            }

            if (totalSeconds < 3600) {
                var minutes = totalSeconds / 60;
                var seconds = totalSeconds % 60;
                return $"{minutes}m {seconds}s"; // 小于1小时，显示分秒
            }
            else {
                var hours = totalSeconds / 3600;
                var remainingSeconds = totalSeconds % 3600;
                var minutes = remainingSeconds / 60;
                var seconds = remainingSeconds % 60;
                return $"{hours}h {minutes}m {seconds}s"; // 超过1小时，显示时分秒
            }
        }
    }
}
