1

我有两个不同的列来存储日期和时间。一个是保存日期,另一个是时间。在我使用当地时间之前,它工作正常。现在我想为亚利桑那州设置这个时间所以我将我的日期时间转换为 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();

请帮我..

4

3 回答 3

5

尝试使用DateTimeParse 和 DateTimeKind.Utc进行转换

例子:

DateTime UniversalScheduleDate = DateTime.SpecifyKind(
DateTime.Parse(txtDate.Text),DateTimeKind.Utc);

string formattedDate = DateTime.UniversalScheduleDate.ToString("HH:mm:ss tt");
于 2012-07-23T09:28:19.323 回答
3

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

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

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

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

另请注意,由于夏令时转换,将本地时间转换为世界时间可能是有损的。.NET 框架使得很好地处理它变得相对痛苦,但您应该牢记这一点。

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

于 2012-07-23T09:28:34.273 回答
0

以 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 />");
于 2012-07-23T09:35:25.600 回答