如何将世界时转换为AM和PM

本文关键字:AM PM 转换 世界 | 更新日期: 2023-09-27 18:19:27

我使用将2014-08-21 12:00 AM转换为2014-08-21T18:00:000Z

ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffK") 

但现在我想扭转局面。如何将2014-08-21T18:00.000Z转换为2014-08-21 12:00 AM?

如何将世界时转换为AM和PM

开始:

var localFormat = "MM-dd-yyyy HH:mm tt";
string universalFormat = "yyyy-MM-dd'T'HH:mm:ss.fffK";
var now = DateTime.Now;
Console.WriteLine(now.ToString(localFormat));
var universal = now.ToUniversalTime().ToString(universalFormat);
Console.WriteLine(universal);
var newNow = Convert.ToDateTime(universal).ToLocalTime().ToString(localFormat); 
Console.WriteLine(newNow);

输出:

8/24/2014 11:16 PM
2014-08-25T06:16:45.229Z
8/24/2014 11:16 PM

最后一个是string,就像通用的一样,但您可以放弃ToString()转换,只需按需格式化即可。由您决定,我只是提供基础代码。

编辑:

根据OP在评论中的要求:

// Here's one way of converting a string to DateTime.
var date = Convert.ToDateTime("8/24/2014 11:16:45 PM");
// Here's one way of creating DateTime by providing arguments.
var date = new DateTime(2014, 8, 24, 23, 16, 45);

为了安全起见,我还建议将本地化作为一个论据。一旦有了这些变量,就可以执行与前面展示的代码相同的操作。

如果你只想要日期或时间,只需相应地格式化输出即可:

// If you want strings.
date.ToString("MM-dd-yyyy");
date.ToSTring("HH:mm:ss");
// If you want DateTime and TimeSpan
date.Date();
date.TimeOfDay();

我刚刚在LINQPad:中做了这件事

var dt = DateTime.Parse("2014-08-21 12:00 AM")
   .ToUniversalTime()
   .ToString("yyyy-MM-dd'T'HH:mm:ss.fffK");
var dtReverse = DateTime.Parse("2014-08-20T18:30:00.000Z")
   .ToLocalTime()
   .ToString("yyyy-MM-dd h:mm tt");

我的结果:

2014-08-20T18:30:00.000Z
2014-08-21 12:00 AM

您可以简单地尝试一下:

TimeZone.CurrentTimeZone.ToLocalTime(date);

同时检查DateTimeOffSet

表示时间点,通常表示为天,相对于协调世界时(UTC)。

还有

DateTime changedDate = DateTime.SpecifyKind(DateTime.Parse(dateStr),
    DateTimeKind.Utc);
DateTime dt = convertedDate.ToLocalTime();