如果我只有字符串形式的时间(例如 09:00 AM),如何获取 TimeSpan 的偏移量

发布于 2024-08-07 13:11:00 字数 52 浏览 3 评论 0原文

我有字符串“9:00 AM”。我想将午夜的偏移量作为 C# 中的 TimeSpan 获取?

I have the string "9:00 AM". I would like to get the offset from midnight as a TimeSpan in C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

拥有 2024-08-14 13:11:00

9:00 AM 是准时时间,而 TimeSpan 结构表示时间间隔,因此您尝试将苹果转换为橙子。

9:00 AM is a punctual time, while TimeSpan structure represents time intervals so you are trying to convert apples to oranges.

病女 2024-08-14 13:11:00

时间跨度?时间跨度只是一段时间。 “AM”表明这是一个特定时间,因此这不能是时间跨度。或者您想解析不带“AM”的“9:00”,并得到 9 小时的时间跨度结果?

@您的评论:

您可以使用为您执行此操作的方法。这是一个简单的示例实现(您需要添加更好的输入验证,使用比 Convert.ToInt32() 更好的转换方法等等):

public static TimeSpan GetTimeSpanFormString(string strString)
{
    strString = strString.Trim();
    string[] strParts = strString.Split(':', ' ');

    int intHours, intMinutes;

    if (strParts.Length != 3)
        throw new ArgumentException("The string is not a valid timespan");

    intHours = strParts[2].ToUpper() == "PM" ? Convert.ToInt32(strParts[0]) + 12 : Convert.ToInt32(strParts[0]);
    intMinutes = Convert.ToInt32(strParts[1]);

    return new TimeSpan(intHours, intMinutes, 0);
}

Timespan? A timespan is just a period of time. The "AM" shows that this is a specific time, so this cannot be a timespan. Or do you want to parse "9:00", without the "AM", and get a timespan of 9 hours as result?

@Your comment:

You could use a method that does this for you. Here's a simple example implementation (you would need to add better input validation, use better convert methods than just Convert.ToInt32() and so on):

public static TimeSpan GetTimeSpanFormString(string strString)
{
    strString = strString.Trim();
    string[] strParts = strString.Split(':', ' ');

    int intHours, intMinutes;

    if (strParts.Length != 3)
        throw new ArgumentException("The string is not a valid timespan");

    intHours = strParts[2].ToUpper() == "PM" ? Convert.ToInt32(strParts[0]) + 12 : Convert.ToInt32(strParts[0]);
    intMinutes = Convert.ToInt32(strParts[1]);

    return new TimeSpan(intHours, intMinutes, 0);
}
红玫瑰 2024-08-14 13:11:00

如果您想要午夜的偏移量,您可以使用:

  DateTime dateTime = DateTime.ParseExact( strValue, "h:mm tt" );
  TimeSpan offset = dateTime - DateTime.Today;

If you want the offset from midnight, you can use:

  DateTime dateTime = DateTime.ParseExact( strValue, "h:mm tt" );
  TimeSpan offset = dateTime - DateTime.Today;
苍白女子 2024-08-14 13:11:00
TimeSpan.TryParse(yourString, out yourTimeSpan);
TimeSpan.TryParse(yourString, out yourTimeSpan);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文