我有一个日期/时间字符串,看起来像这样:
Wed Sep 21 2011 12:35 PM Pacific
我该如何将 DateTime 格式化为这样的样式呢?
谢谢!
我有一个日期/时间字符串,看起来像这样:
Wed Sep 21 2011 12:35 PM Pacific
我该如何将 DateTime 格式化为这样的样式呢?
谢谢!
时区前面的位很容易,使用自定义日期和时间格式字符串即可:
string text = date.ToString("ddd MMM dd yyyy hh:mm t");
string.Format("{0} {1}", DateTime.Now.ToString("ddd MMM dd yyyy HH:mm tt"), TimeZone.CurrentTimeZone.StandardName);
//Result: Wed Sep 07 2011 14:29 PM Pacific Standard Time
如果您不想显示标准时间,请将其修剪掉。
编辑: 如果您需要在多个地方执行此操作,还可以扩展DateTime以包括一个方法来为您执行此操作。
void Main()
{
Console.WriteLine(DateTime.Now.MyCustomToString());
}
// Define other methods and classes here
public static class DateTimeExtensions
{
public static string MyCustomToString(this DateTime dt)
{
return string.Format("{0} {1}", DateTime.Now.ToString("ddd MMM dd yyyy HH:mm tt"), TimeZone.CurrentTimeZone.StandardName).Replace(" Standard Time", string.Empty);
}
}
您可以直接复制并在程序模式下在LinqPad中运行此示例。
更新说明
根据下方的评论,这是更新后的版本。
void Main()
{
Console.WriteLine(DateTime.Now.MyCustomToString());
}
// Define other methods and classes here
public static class DateTimeExtensions
{
public static string MyCustomToString(this DateTime dt)
{
return string.Format("{0:ddd MMM dd yyyy hh:mm tt} {1}", DateTime.Now, TimeZone.CurrentTimeZone.StandardName).Replace(" Standard Time", string.Empty);
}
}
String.Format("{0:ddd MMM dd yyyy HH:mm tt} {1}", DateTime.Now, TimeZone.CurrentTimeZone.StandardName)
。 - Joel Muellerhh
而不是HH
。 - Joel Muellerstring text = date.ToString("ddd MMM dd yyyy hh:mm t");
TimeZone localZone = TimeZone.CurrentTimeZone;
string x = localZone.StandardName.ToString();
string split = x.Substring(0,7);
string text = date.ToString("ddd MMM dd yyyy hh:mm t") + " " + split;
我没有测试过,但希望它能有所帮助!