将字符串转换为 EST 中的字符串(日期时间)

问题描述 投票:0回答:2

我有字符串 “Sat, 20 Mar 2021 14:04:48 +0000” 我想将其转换为 “20 Sat 2021 | 14:04 PM”

我想按原样转换字符串,但它在我的本地和服务器中显示不同。

c# .net asp.net-mvc datetime-format
2个回答
1
投票

首先

20 Mar 2021
星期六,不是星期一,纠正一下。然后你可以
ParseExact
得到
DateTime
并最终在
ToString()
的帮助下以所需的格式表示它:

  string source = "Sat, 20 Mar 2021 14:04:48 +0000";

  string result = DateTime
    .ParseExact(source, "ddd, dd MMM yyyy HH:mm:ss zzz", CultureInfo.InvariantCulture)
    .ToUniversalTime()
    .ToString("dd MMM yyyy' | 'HH:mm tt", CultureInfo.InvariantCulture);

备注:

  • 看来你想获得Universal(而不是Local)时间,这就是为什么我添加了
    ToUniversalTime()
  • 14:04 PM
    对我来说看起来奇怪
    14:04
    02:04 PM
    是更常见的格式);把
    hh
    代替
    HH
    得到
    02:04 PM

1
投票

如果您确实想操作时区信息,请使用Noda Time

如果这正是您的文本格式,并且日期和时间是您想要的,您可以手动转换:

var input = "Mon, 20 Mar 2021 14:04:48 +0000";

var dateParts = input.Split(' ');
var timeParts  = dateParts[4].Split(':');
var amPm = int.Parse(timeParts[0]) < 12 ? "AM" : "PM";
var output = $"{dateParts[1]} {dateParts[2]} {dateParts[3]} | {timeParts[0]}:{timeParts[1]} {amPm}";

System.Console.WriteLine(output); // "20 Mar 2021 | 14:04 PM"

或者,如果您喜欢冒险,请使用正则表达式

© www.soinside.com 2019 - 2024. All rights reserved.