【问题标题】:Can we convert UTC time to 24 hour Format? if yes, then How?我们可以将 UTC 时间转换为 24 小时格式吗?如果是,那么如何?
【发布时间】:2012-07-21 12:33:20
【问题描述】:

我有两个不同的列来存储日期和时间。一个是保存日期,另一个是时间。在我使用当地时间之前,它工作正常。现在我想为亚利桑那州设置这个时间,因此我将日期时间转换为 UTC 时间,并使用 TimeZoneIfo 的方法 ConvertTime 来获取亚利桑那州的时间。 现在我的问题是我可以使用它来获取日期,但是当我节省时间时,它以 12 小时格式出现,我想将其转换为 24 小时。 我的代码是

DateTime UniversalScheduleDate = Convert.ToDateTime(txtDate.Text).ToUniversalTime();
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(Session["TimeZone"].ToString());
objSchdl.SDate = TimeZoneInfo.ConvertTime(UniversalScheduleDate, timeZoneInfo);
DateTime UniversalStartTime = Convert.ToDateTime(txtStartTime.Text).ToUniversalTime();
objSchdl.Stime = TimeZoneInfo.ConvertTime(UniversalStartTime, timeZoneInfo).ToString();

请帮帮我..

【问题讨论】:

    标签: c# asp.net datetime time utc


    【解决方案1】:

    尝试使用 DateTimeParse 和 DateTimeKind.Utc

    进行转换

    例子:

    DateTime UniversalScheduleDate = DateTime.SpecifyKind(
    DateTime.Parse(txtDate.Text),DateTimeKind.Utc);
    
    string formattedDate = DateTime.UniversalScheduleDate.ToString("HH:mm:ss tt");
    

    【讨论】:

    • 示例前面的文本在这里完全无关紧要 - 它是格式字符串,将其设置为 24 小时格式...尽管您 包括 AM/PM指示符(在 24 小时时为奇数)并且您没有指定文化,这对于自定义格式字符串也很奇怪。根本不清楚原始输入是否意味着代表世界时。
    【解决方案2】:

    您需要将时区信息与字符串表示分开。它们是完全正交的概念。

    听起来您可能只需要在ToString 调用中指定格式,例如

    ToString("yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture);
    

    您还应该考虑使用特定格式解析 - 并考虑要使用哪种文化。

    另请注意,由于夏令时转换,将本地时间转换为世界时间可能会有损。 .NET 框架很难很好地处理这个问题,但您应该牢记这一点。

    最后,请注意,当您调用 ToUniversalTime 时,它将使用 系统本地 时区进行转换 - 这真的是您想要的吗?

    【讨论】:

    • 是的,我想将其转换为亚利桑那州的时区,我在 CultureInfo 上遇到错误,要为其添加什么命名空间???
    • @raman:您是否尝试查看文档?搜索“msdn CultureInfo”会很快找到。我知道您想将其 转换为 亚利桑那州的时区 - 但是您最初的 ToUniversalTime() 电话呢?这会将它系统时区转换...
    • 谢谢我用谷歌搜索它.. 谢谢你帮助我.. – 拉曼 1 小时前
    【解决方案3】:

    您的时间采用 12 小时格式。在将其保存到数据库之前,您可以使用以下脚本更改为 24 小时格式并保存

    希望下面的代码对你有所帮助。

            Response.Write("With Seconds" + "<br />");
    
            Response.Write("24 Hour Date Format : " + DateTime.Now.ToString("HH:mm:ss tt") + "<br />");
            Response.Write("Without Seconds" + "<br />");
    
            Response.Write("24 Hour Date Format : " + DateTime.Now.ToString("HH:mm tt") + "<br />");
    

    【讨论】:

    • CultureInfo 命名空间 System.Globalization.CultureInfo
    猜你喜欢
    • 2015-10-01
    • 1970-01-01
    • 2015-01-24
    • 2018-06-05
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多