src/sample/XXX.API/TimeZoneDemo/Controllers/TimeZoneDemoController.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Localization;
namespace XXX.API.Controllers
{
/// <summary>
/// 单程序集开发方式
/// </summary>
[ApiController]
[Route("[controller]")]
public class TimeZoneDemoController : ControllerBase
{
private readonly ILogger<TimeZoneDemoController> _logger;
private readonly IStringLocalizer<NetPro.Globalization.Globalization> _localizer;
/// <summary>
///
/// </summary>
/// <param name="logger"></param>
/// <param name="localizer"></param>
public TimeZoneDemoController(ILogger<TimeZoneDemoController> logger
, IStringLocalizer<NetPro.Globalization.Globalization> localizer)
{
_logger = logger;
_localizer = localizer;
}
/// <summary>
/// 时间戳、时区、时间处理示例
/// </summary>
[HttpPost("TimeZone")]
[ProducesResponseType(200)]
public IActionResult TimeZone()
{
var localTime = DateTimeOffset.Now.ToUnixTimeSeconds();
var utcTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
var milliseconds = DateTimeOffset.Now.ToUnixTimeMilliseconds();
//localTime 与 utcTime等价,没有时差
_logger.LogInformation($"Now={localTime}");
_logger.LogInformation($"UtcNow={utcTime}");
//要用TimeZoneInfo对象指定时区时统一用linux用的时区表示法,.net6+已同时支持所有操作系统的时区方式,无需使用TimeZoneConverter进行时区处理
//即大洲/城市名代表,hangfire定时作业时注意
TimeZoneInfo linuxTimezone = TimeZoneInfo.FindSystemTimeZoneById("Asia/Shanghai");
TimeZoneInfo windowsTimezone = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");
//Local会取本地时区,现在让容器限定了utc,以下方式始终都是取UTC时区
var localTimezone = TimeZoneInfo.Local;
_logger.LogInformation($"linuxTimezone-Asia/Shanghai={linuxTimezone}");
_logger.LogInformation($"windowsTimezone-China Standard Time={windowsTimezone}");
_logger.LogInformation($"localTimezone-TimeZoneInfo.Local={localTimezone}");
//会跟随操作系统时区自动进行转换,接受到的时间字符串和转换后的时间不在同时区会不一样(不推荐使用)
var dateTime = DateTime.Parse("2021-12-16 12:09:30");
//不会根据操作系统时区进行处理,接受的时间字符串和转换后的时间一致(推荐使用)
var dateTimeOffset = DateTimeOffset.Parse("2021-12-16 12:09:30");
_logger.LogInformation($"dateTime={dateTime}");
_logger.LogInformation($"dateTimeOffset={dateTimeOffset}");
//时间戳转带时区的时间字符串
后面还有 11 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。