我有一个日期/时间字符串,如下所示:
Wed Sep 21 2011 12:35 PM Pacific
如何将DateTime格式化为这样?
谢谢!
答案 0 :(得分:9)
使用custom date and time format string:
,时区之前的位很容易string text = date.ToString("ddd MMM dd yyyy hh:mm t");
但是,我相信.NET日期/时间格式将不为您提供“太平洋”部分。它能给你的最好的是UTC的时区 offset 。如果你能以其他方式获得时区名称,这很好。
许多TimeZoneInfo
个标识符包含这个词太平洋,但没有一个只是“太平洋”。
答案 1 :(得分:6)
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);
}
}
答案 2 :(得分:5)
答案 3 :(得分:2)
请注意,这可能有点粗糙,但它可能会引导您朝着正确的方向前进。
采纳并添加Jon提到的内容:
string 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;
我没有测试过,但我希望它有所帮助!