如何以 T07:07:45-0500 格式获取当前时间

本文关键字:获取 时间 格式 T07 45-0500 | 更新日期: 2023-09-27 18:35:09

我想以T07:07:45-0500格式获取当前时间。

我试过这样:

DateTime currentDate = DateTime.Now;
String currentTime = currentDate.ToString("'T'HH':'mm':'ssK");
Console.WriteLine("DOB ==> " + dateOfBirth.ToString("yyyy-MM-dd") + currentTime);

但结果是1986-07-11T07:07:45-05:00

我想要像1986-07-11T07:07:45-0500这样的结果

有没有办法以T07:07:45-0500格式获取当前时间。

请帮助我解决我的问题。

如何以 T07:07:45-0500 格式获取当前时间

我认为 .NET 自定义日期和时间格式字符串不允许这种格式。您可以轻松使用我的 Noda Time 项目,如果您希望应用系统默认时区,请使用DateTimeOffset.Now。(可以显式完成

例如:

var odt = OffsetDateTime.FromDateTimeOffset(DateTimeOffset.Now);
var pattern = OffsetDateTimePattern.CreateWithInvariantCulture(
    "yyyy-MM-dd'T'HH:mm:sso<+HH:mm>");
Console.WriteLine(pattern.Format(odt));

如评论中所述,您目前正在组合值方面做一些非常奇怪的事情。如果你真的想这样做,我个人会创建一个合适的OffsetDateTime,如下所示:

LocalDate dateOfBirth = ...; // Wherever that comes from
OffsetDateTime now = OffsetDateTime.FromDateTimeOffset(DateTimeOffset.Now);
OffsetDateTime mixture = dateOfBirth.At(now.LocalTime).WithOffset(now.Offset);
var pattern = ...; // as before
Console.WriteLine(pattern.Format(mixture));

这样可以更清楚地组合这些值。

我认为偏移量的表示取决于您CurrentCulture如何表示UTC偏移值。它可能是格式为 -05:00-0500 或简单地 - 05

根据注释,看起来 UTC 偏移量格式是硬编码的,它不依赖于任何区域性。

您应该清楚地找到:字符的最后一个索引并将其替换为空字符串。我认为在.NET Framework中没有其他解决方案。

DateTime currentDate = DateTime.Now;
String currentTime = currentDate.ToString("'T'HH':'mm':'ssK");
currentTime = currentTime.Remove(currentTime.LastIndexOf(":"), 1);