我想以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
格式获取当前时间。
请帮我解决我的问题。
答案 0 :(得分:1)
我不认为.NET custom date and time format strings允许这种格式。如果您希望应用系统默认时区,则可以使用DateTimeOffset.Now
轻松地使用我的Noda Time项目。 (可以明确地完成
例如:
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));
这使得如何组合这些值更加清晰。
答案 1 :(得分:1)
我认为偏移的表示取决于 CurrentCulture
代表UTC Offset值的方式。格式可能是-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);