首页 > 编程问答 >将 CTE 字符串中的日期转换为 DateTime 对象并转换为 UTC

将 CTE 字符串中的日期转换为 DateTime 对象并转换为 UTC

时间:2024-06-07 14:54:17浏览次数:23  
标签:c# .net datetime

我有一个包含 CTE 格式日期时间的字符串,我想将其转换为日期时间对象,然后获取 UTC 格式的日期时间。

我尝试了下面的代码,它完成了转换。但问题是在昼夜节律变化前后,由于时间变化,它认为时间无效。

DateTime.TryParseExact
 (
     myDate,"yyyyMMdd",CultureInfo.InvariantCulture.DateTimeStyles.None)、
     DateTimeStyles.None, out var date
 );
 var unSpecifiedKing = DateTime.SpecifyKind(date, DateTimeKind.Unspecified);
 var utcDate = TimeZoneInfo.ConvertTimeToUtc(unSpecifiedKing, tzi);


string myDate = "20230312013000"; // 示例 CTE 日期时间字符串

// 定义用于解析的自定义日期时间格式
string format = "yyyyMMddHHmmss"; 

if (DateTime.TryParseExact(myDate, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dateTime))
{
    // 将 DateTimeKind 设置为 Unspecified
    DateTime unspecifiedDateTime = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified);

    // 将未指定的时间转换为 UTC
    DateTime utcDateTime = TimeZoneInfo.ConvertTimeToUtc(unspecifiedDateTime);

    Console.WriteLine("UTC 日期时间:" + utcDateTime.ToString("yyyy-MM-dd HH:mm:ss")); 
}
else
{
    Console.WriteLine("无法解析日期时间字符串。");
}

说明:

  1. 自定义格式字符串: format = "yyyyMMddHHmmss" 用于匹配 CTE 日期时间字符串的格式(年年年年月月日日时时分分秒秒)。
  2. TryParseExact : 使用 TryParseExact 方法,并提供自定义格式字符串来解析 CTE 日期时间字符串。
  3. DateTime.SpecifyKind : 将解析后的日期时间的 Kind 属性明确设置为 DateTimeKind.Unspecified ,因为它不包含时区信息。
  4. TimeZoneInfo.ConvertTimeToUtc : 使用 TimeZoneInfo.ConvertTimeToUtc 方法将未指定的时间转换为 UTC。

重要提示:

  • 确保 CTE 日期时间字符串始终使用一致的格式。
  • 此代码假设 CTE 日期时间字符串不包含时区信息。如果包含时区信息,则需要相应地调整代码。

通过使用自定义格式字符串和明确指定 DateTimeKind ,可以正确解析 CTE 日期时间字符串并将其转换为 UTC,而不会受到夏令时的影响。

标签:c#,.net,datetime
From: 78590296

相关文章

  • React Native:尝试使用手势处理使文本组件可拖动时出现渲染错误
    我正在ReactNative应用程序中开发一项照片编辑功能,用户可在其中添加可拖动的文本覆盖。我使用钩子来管理文本块的位置,并通过手势处理来更新它们。但是,当我尝试在手势过程中更新这些文本元素的位置(例如拖动)时、我遇到了一个呈现错误:"呈现的钩子比上一次呈现时多。我怀......
  • free() on result of placement new?
    我试图了解在由malloc()分配的缓冲区中,对placementnew的结果调用free()是否有效。请考虑以下几点。这段代码是否表现出任何未定义的行为?(假设T没有重载任何new或delete操作符)T......
  • CronetDynamite.apk 中的奇怪崩溃(偏移量 0x1000) Android
    我的应用程序在2021年2月1日出现崩溃报告。崩溃LGELGPremierPro安卓9(SDK28)Playstore控制台崩溃已在CronetDynamite.apk中报告了40次backtrace:......
  • BOSHIDA AC/DC电源模块:简化电路设计的便捷解决方案
    BOSHIDAAC/DC电源模块:简化电路设计的便捷解决方案AC/DC电源模块是一种常用的电力转换装置,用于将交流电源转换为直流电源,以提供给各种电子设备和系统使用。它在电路设计中起到了简化电路、提高效率和可靠性的重要作用。本文将介绍AC/DC电源模块的工作原理、应用领域以及优势。......
  • 使用jmeter,响应体response body中有两个同名的cookies时,如何获取第二个cookie进行跨线
     如图两个同名cookie:.AspNetCore.Cookies正则表达式提取器引用名称:loginCookie正则表达式:Set-Cookie:(.AspNetCore.Cookies=.*?;)模板:$1$(确保正确匹配到第二个.AspNetCore.Cookies)匹配数字2  beanshell后置处理程序${__setProperty(loginCookie,${loginCookie},)......
  • k8s学习--ingress详细解释与应用(nginx ingress controller))
    文章目录lngress简介什么是IngressIngress的用途Ingress的工作原理Ingress的工作流程Ingress的应用场景应用实验环境部署nginxingresscontroller1.安装metalLB2.nginxingresscontroller部署3.ingress对象应用案例(基于名称的负载均衡)(1)创建deployment控制......
  • C语言基础——函数
             ʕ•ᴥ•ʔ       づ♡ど ......
  • [中文参数] AGFA027R31C2I3V、AGFA027R31C2I3E、AGFA027R31C2E3E、AGFA027R31C2E4X面
    Agilex™FPGA产品组合包含一系列产品,可充分满足每一个技术领域(从边缘到嵌入式系统,再到通信和数据中心)的众多可编辑逻辑需求。在所有这些领域中,数据爆炸导致新产品需求激增,以便移动、处理和存储数据并从中获得可执行的深度分析。这些产品的开发人员需要硬件灵活性来应对不断变化......
  • 【YOLOv8改进】YOLOv8 更换损失函数之 SIoU EIoU WIoU _ Focal_*IoU CIoU DIoU ShapeI
    YOLO目标检测创新改进与实战案例专栏专栏目录:YOLO有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLO基础解析+创新改进+实战案例GIoU文章链接论文地址:论文地址代码地址:代码地址基本原理广义Io......
  • 【Webpack4打包机制原理解析】
    webpack是一个打包模块化JavaScript的工具,在webpack里一切文件皆模块,通过Loader转换文件,通过Plugin注入钩子,最后输出由多个模块组合成的文件。webpack专注于构建模块化项目。#简单版打包模型步骤我们先从简单的入手看,当webpack的配置只有一个出口时,不考虑分......