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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。