首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏林德熙的博客

    dotnet 将任意时区的 DateTimeOffset 转换为中国时区时间文本

    本文告诉大家在拿到任意时区的 DateTimeOffset 对象,将 DateTimeOffset 转换为使用中国的 +8 时区表示的时间 在开始之前,需要说明的是,采用 DateTimeOffset 会比 DateTime 更优的一个点是 DateTimeOffset 是带上时区的,这就意味着方便的在多个不同的时区进行传递和序列化的时候,不会丢失原来的信息 现在也推荐更多的使用 DateTimeOffset ); DateTimeOffset newDateTimeOffset = dateTimeOffset + timeSpan; 修改 China Standard Time 转换为 UTC 时间,代码如下 DateTimeOffset utcDateTimeOffset = dateTimeOffset.ToUniversalTime(); DateTimeOffset newDateTimeOffset = utcDateTimeOffset + timeSpan; 以上就是转换为中国时间的方法

    3.1K40编辑于 2023-04-07
  • 来自专栏newbe36524的技术专栏

    如何使用 System.Text.Json 序列化 DateTimeOffset 为 Unix 时间戳

    DateTime 是不带时区信息的,而 DateTimeOffset 是带时区偏移量的,可以用来表示一个特定的时刻。 在本文中,我们将探讨如何在 System.Text.Json 中将 DateTimeOffset 序列化为时间戳。 对象 var dateTimeOffset = new DateTimeOffset(2020, 10, 25, 10, 15, 0, TimeSpan.FromHours(8 )); // 序列化 DateTimeOffset 对象为 JSON var json = JsonSerializer.Serialize(dateTimeOffset 总结 本文介绍了如何使用 System.Text.Json 库将 DateTimeOffset 序列化为时间戳。

    1.3K20编辑于 2023-08-23
  • 来自专栏林德熙的博客

    dotnet6 C# 一个国内还能用的 NTP 时间校准客户端的实现

    如需转换为本机时区时间,请使用 var dateTimeOffset = NtpClient.GetChineseNetworkTime();var 本机时区时间 = dateTimeOffset.LocalDateTime = await GetChineseNetworkTimeCore("ntp.aliyun.com"); // 阿里 dateTimeOffset ?? = new DateTimeOffset(dateTime, TimeSpan.Zero); return dateTimeOffset; } 类型,此 DateTimeOffset 和 DateTime 的最大差别在于 DateTimeOffset 是带时区的。 var dateTimeOffset = await NtpClient.GetChineseNetworkTime(); if (dateTimeOffset is

    2.4K31编辑于 2023-04-07
  • 来自专栏数据分析

    [数据库基础]——快速浏览日期时间转换

    @datetimeoffset datetimeoffset(3) = @time; 4:   5: SELECT @time AS '@time', @datetimeoffset +00:00 ---- 1: -- datetimeoffset -> time 2: DECLARE @datetimeoffset datetimeoffset(4) = '12- datetimeoffset(3) = @date; 4:   5: SELECT @date AS '@date', @datetimeoffset AS '@datetimeoffset -- datetimeoffset -> date 2: DECLARE @datetimeoffset datetimeoffset(4) = '12-10-25 12:32:10 +01:0 datetime = @datetimeoffset; 4:   5: SELECT @datetimeoffset AS '@datetimeoffset ', @datetime

    1.5K60发布于 2018-03-01
  • 来自专栏walterlv - 吕毅的博客

    C#/.NET 读取或修改文件的创建时间和修改时间

    private void FixFileDate(FileInfo file, DateTimeOffset createdTime, DateTimeOffset modifiedTime) { file.LastAccessTimeUtc = DateTimeOffset.Now.UtcDateTime; } 至于如何获取 Markdown 文件元数据中的时间,可以使用 YamlDotNet( UpdateMetaTime(file, file.CreationTimeUtc, file.LastWriteTimeUtc); void UpdateMetaTime(FileInfo file, DateTimeOffset publishDate, DateTimeOffset date) { var publishDateString = date.ToLocalTime().ToString("yyyy-MM-dd } 关于 UTC 时间 也许你注意到以上我使用的时间类型都是 DateTimeOffset 而不是 DateTime,这是因为 DateTimeOffset 中记录了时区信息,不至于在使用的过程中丢掉时区信息

    4K10发布于 2018-09-18
  • 来自专栏大内老A

    两种基于时间窗口的限流器的简单实现

    SliddingWindowRateLimiter采用一种“讨巧”的实现,它直接利用了BoundedChannel<DateTimeOffset>对象,我们将指定的阈值作为它的最大容量。 > _reader; private readonly ChannelWriter<DateTimeOffset> _writer; public SliddingWindowRateLimiter SingleReader = false, SingleWriter = true }; var channel = Channel.CreateBounded<DateTimeOffset { if (limiter.TryAcquire()) { Console.WriteLine($"[{DateTimeOffset.Now { if (limiter.TryAcquire()) { Console.WriteLine($"[{DateTimeOffset.Now

    56020编辑于 2023-11-02
  • 来自专栏编程宝典

    .NET 纯原生实现 Cron 定时任务执行,未依赖第三方组件

    GetNextOccurrence(string cronExpression, DateTimeOffset afterTimeUtc) { return new > GetNextOccurrences(string cronExpression, DateTimeOffset afterTimeUtc, int count) { CronExpression cron = new(cronExpression); List<DateTimeOffset> dateTimeOffsets = new(); </param> /// <returns></returns> public DateTimeOffset? (DateTimeOffset time) { return new DateTimeOffset(time.Year, time.Month,

    1.6K20编辑于 2022-10-28
  • 来自专栏大内老A

    如何让Task在非线程池线程中执行?

    (); } } void Do() { var end = DateTime.UtcNow.AddSeconds(2); SpinWait.SpinUntil(() => DateTimeOffset.UtcNow end); var isThreadPoolThread = Thread.CurrentThread.IsThreadPoolThread; Console.WriteLine($"[{DateTimeOffset.Now (); } } void Do() { var end = DateTime.UtcNow.AddSeconds(2); SpinWait.SpinUntil(() => DateTimeOffset.UtcNow end); var isThreadPoolThread = Thread.CurrentThread.IsThreadPoolThread; Console.WriteLine($"[{DateTimeOffset.Now (); var isThreadPoolThread = Thread.CurrentThread.IsThreadPoolThread; Console.WriteLine($"[{DateTimeOffset.Now

    2.6K20编辑于 2023-05-31
  • 来自专栏林德熙的博客

    dotnet 制作一个简单的自动更新系统日期时间工具

    如需转换为本机时区时间,请使用 var dateTimeOffset = NtpClient.GetChineseNetworkTime();var 本机时区时间 = dateTimeOffset.LocalDateTime = await GetChineseNetworkTimeCore("ntp.tencent.com"); // 腾讯 dateTimeOffset ?? = await GetChineseNetworkTimeCore("ntp.aliyun.com"); // 阿里 dateTimeOffset ?? = await GetChineseNetworkTimeCore("cn.ntp.org.cn"); // 中国授时 dateTimeOffset ?? = new DateTimeOffset(dateTime, TimeSpan.Zero); return dateTimeOffset; }

    41910编辑于 2025-12-21
  • 来自专栏DotNet NB && CloudNative

    动手造轮子 - 实现基于文件的日志扩展

    , string, DateTimeOffset, string?>? privatereadonly FileLoggingOptions _options; privatereadonly BlockingCollection<(string log, DateTimeOffset dateTimeOffset) { if (_messageQueue.IsAddingCompleted) return; try { _messageQueue.Add((log, dateTimeOffset)); } catch (InvalidOperationException) { } // ignored } } } private void WriteLoggingEvent(string log, DateTimeOffset

    24800编辑于 2025-02-18
  • 来自专栏大内老A

    ASP.NET Core 6框架揭秘实例演示[20]:“数据保护”框架基于文件的密钥存储

    .BuildServiceProvider() .GetRequiredService<IKeyManager>(); var key1 = keyManager.CreateNewKey(DateTimeOffset.Now , DateTimeOffset.Now.AddDays(1)); var key2 = keyManager.CreateNewKey(DateTimeOffset.Now ,DateTimeOffset.Now.AddDays (2)); var key3 = keyManager.CreateNewKey(DateTimeOffset.Now, DateTimeOffset.Now.AddDays(3)); Console.WriteLine var key = keyManager.GetAllKeys().First(); keyManager.RevokeKey(key.KeyId); keyManager.RevokeAllKeys(DateTimeOffset.Now

    90440编辑于 2022-05-09
  • 来自专栏林德熙的博客

    Roslyn MSBuild 在构建完成之后 将构建时间写入到输出文件

    WriteBuildInfoTarget" AfterTargets="Build"> <WriteLinesToFile File="$(OutputPath)\BuildTime.txt" Lines="$([System.<em>DateTimeOffset</em> BuildTime.txt 文件,在这个文件里面可以看到当前的构建时间,大概内容如下 2022/10/29 16:12:53 +08:00 如果提示 error MSB4185: 类型“System.<em>DateTimeOffset</em> ”上的函数“get_Now”无法作为 MSBuild 属性函数执行 那么可以将 <em>DateTimeOffset</em> 降级使用 DateTime 代替。 BuildTime.txt" Lines="$([System.DateTime]::get_Now().ToString())" Overwrite="true"/> </Target> 使用 DateTimeOffset 在这里会比 DateTime 更优,因为 DateTimeOffset 能写入时区 如果担心遇到语言文化的问题,也就在其他的国家里面的对日期的格式化和中国不同,导致行为的不同。

    1.8K10编辑于 2023-04-07
  • 来自专栏DotNet NB && CloudNative

    告别异常处理:用Result模式和Discriminated Union打造优雅的C#错误处理机制

    ; public Guid UserId { get; set; } public DateTimeOffset CreatedAt { get; set; } public DateTimeOffset? InvalidOperationException("Invalid input."); } note.Title = title; note.UpdatedAt = DateTimeOffset.UtcNow Error = "Invalid input." }; } note.Title = title; note.UpdatedAt = DateTimeOffset.UtcNow ErrorType.InvalidInput }; } note.Title = title; note.UpdatedAt = DateTimeOffset.UtcNow

    20110编辑于 2025-08-06
  • 来自专栏编程宝典

    .NET 纯原生实现 Cron 定时任务执行,未依赖第三方组件 (Timer 优化版)

    state) { var nowTime = DateTime.Parse(DateTimeOffset.UtcNow.ToString("yyyy-MM-dd MethodInfo Action { get; set; } public object Context { get; set; } public DateTimeOffset state) { var nowTime = DateTime.Parse(DateTimeOffset.UtcNow.ToString("yyyy-MM-dd ; historyKeyList.Add(key); item.LastTime = DateTimeOffset.Now MethodInfo Action { get; set; } public object Context { get; set; } public DateTimeOffset

    58240编辑于 2022-10-28
  • 来自专栏DotNet NB && CloudNative

    .NET 9中的Guid7支持:彻底解决索引碎片问题

    version7Guid.ToByteArray()[7] >> 4); Console.WriteLine($"Guid版本号: {version}"); // 输出: 7 时间戳集成 可基于特定时间生成Guid: DateTimeOffset Guid: {customGuid}"); // 输出示例: 0197ff15-d21f-7cd6-b066-bb4795eb3391 时间戳提取 从Version 7 Guid可反向解析生成时间: DateTimeOffset BitConverter.ToUInt32(bytes, 0) << 16) | (BitConverter.ToUInt16(bytes, 4) & 0xFFFF); return DateTimeOffset.FromUnixTimeMilliseconds (timestamp); } DateTimeOffset genTime = ExtractTimestamp(customGuid); Console.WriteLine($"解析时间: {genTime -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 在.NET实现中具体对应: // 时间戳处理(48位) long unixMs = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds

    28810编辑于 2025-08-09
  • 来自专栏DotNet NB && CloudNative

    EF 10 Named Query Filter

    publicint Id { get; set; } [StringLength(64)] publicrequiredstring Title { get; set; } public DateTimeOffset context.Database.EnsureCreatedAsync(); { context.Posts.Add(new BlogPost { Title = "test", UpdatedAt = DateTimeOffset.Now ); context.Posts.Add(new BlogPost { Title = "[Disabled]test", UpdatedAt = DateTimeOffset.Now }); context.Posts.Add(new BlogPost { Title = "[Deleted]test", UpdatedAt = DateTimeOffset.Now

    21210编辑于 2025-09-02
  • 来自专栏大内老A

    性能计数器在.NET Core中的新玩法

    string> _keys = new HashSet<string> { "Count", "Min", "Max", "Mean", "Increment" }; private static DateTimeOffset = null && DateTimeOffset.UtcNow - _lastSampleTime.Value > TimeSpan.FromSeconds(1)) { Console.WriteLine(); } _lastSampleTime = DateTimeOffset.UtcNow; var metrics = keys.Contains(it.Key)) .Select(it => $"{it.Key} = {it.Value}"); var timestamp = DateTimeOffset.UtcNow.ToString

    1.6K30发布于 2020-04-08
  • 来自专栏DotNet NB && CloudNative

    5个鲜为人知的C#/.NET开发秘籍:从时间处理到安全配置的实战技巧

    但它存在一些可能引发重大问题的缺陷: • 受服务器时区影响,当不同时区客户端共用数据库时会导致时间数据不可靠 • 难以在单元测试中模拟,导致测试结果不稳定 解决方案是使用DateTimeOffset.UtcNow : var timestamp = DateTime.Now; // 能用但不推荐 // 替代方案 var timestamp = DateTimeOffset.UtcNow; // 更优选择 为了支持单元测试 ,可以创建返回DateTimeOffset的接口,在需要时注入依赖: public interface IDateTimeProvider { DateTimeOffset GetCurrentTime (); } // 生产环境实现 public class DateTimeProvider : IDateTimeProvider { public DateTimeOffset GetCurrentTime () => DateTimeOffset.UtcNow; } // 测试环境可模拟实现 技巧2:EF Core全局查询过滤器 (适用版本:Entity Framework Core) 当需要频繁对某实体应用相同查询条件时

    22610编辑于 2025-07-09
  • 来自专栏全栈程序员必看

    sql服务器系统时间格式,SQL Server 日期格式和日期操做

    ) TIMEFROMPARTS ( hour, minute, seconds, fractions,precision ) 参数precision 是指小数秒的精度,指的是DateTime2(n)、DateTimeOffset month(@date),1) 也可使用Format() 函数, 以字符串形式返回月份的第一天,例如,获取当前月份的第一天: FORMAT(GETDATE(),’yyyyMM01′) 3,切换时区 把DateTimeOffset 类型的数据切换到指定的时区,在转换过程当中,UTC时间是固定的,依据固定的UTC时间,切换到特定时区的本地时间: SWITCHOFFSET ( DATETIMEOFFSET, time_zone ) 参数注释 : DATETIMEOFFSETDateTimeOffset(n)类型的变量 time_zone:指定的目标时区数据,格式是 [+|-] hh:mm 使用SwitchOffset()函数把DateTimeOffset

    5.1K40编辑于 2022-11-03
  • 来自专栏饭勺oO的技术博客

    造轮子之缓存

    static async Task SetAbsoluteExpirationAsync<T>(this IDistributedCache cache, string key, T value, DateTimeOffset dateTimeOffset, CancellationToken cancellationToken = default) { var options = new DistributedCacheEntryOptions { AbsoluteExpiration = dateTimeOffset

    39810编辑于 2023-10-18
领券