Initial project import

This commit is contained in:
2026-07-24 23:11:20 +08:00
commit 6396eabb87
372 changed files with 49682 additions and 0 deletions
@@ -0,0 +1,49 @@
namespace MiaoJiZhang.Api.Services;
public static class ChinaClock
{
private static readonly Lazy<TimeZoneInfo> Zone = new(() =>
{
try
{
return TimeZoneInfo.FindSystemTimeZoneById("Asia/Shanghai");
}
catch (TimeZoneNotFoundException)
{
return TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");
}
});
public static DateTime Now => ToLocal(DateTime.UtcNow);
public static DateTime ToLocal(DateTime utc) =>
TimeZoneInfo.ConvertTimeFromUtc(
DateTime.SpecifyKind(utc, DateTimeKind.Utc),
Zone.Value);
public static DateTime ToUtc(DateTime local) =>
TimeZoneInfo.ConvertTimeToUtc(
DateTime.SpecifyKind(local, DateTimeKind.Unspecified),
Zone.Value);
public static (DateTime Start, DateTime End) WeekRangeUtc(DateTime localDate)
{
var date = DateTime.SpecifyKind(localDate.Date, DateTimeKind.Unspecified);
var offset = ((int)date.DayOfWeek + 6) % 7;
var start = date.AddDays(-offset);
return (ToUtc(start), ToUtc(start.AddDays(7)));
}
public static (DateTime Start, DateTime End) MonthRangeUtc(int year, int month)
{
var start = new DateTime(year, month, 1);
return (ToUtc(start), ToUtc(start.AddMonths(1)));
}
public static (DateTime Start, DateTime End) YearRangeUtc(int year)
{
var start = new DateTime(year, 1, 1);
return (ToUtc(start), ToUtc(start.AddYears(1)));
}
}