如何以 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
格式获取当前时间。
请帮助我解决我的问题。
我认为 .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);