我知道我可以通过使用datetime.ToString(“G”)从操作系统中的用户设置获取正确的时间格式,但是我想添加前导零以确保日期/时间在列中对齐。有没有办法用前导零(没有使用自定义格式字符串)格式化时间并让它以用户设置的格式输出?
答案 0 :(得分:1)
“G”和“g”模式取决于“d”(短日期)模式。请参阅http://msdn.microsoft.com/en-us/library/8tfzyc64.aspx。
您可以根据CultureInfo
构建自定义DateTimeFormatInfo
或CultureInfo.CurrentCulture
对象,但不要直接从源文化中复制ShortDatePattern
,而是替换任何单个字母分别以“MM”和“dd”出现“M”或“d”。
答案 1 :(得分:0)
您不能同时拥有默认和自定义格式。
我认为你想要的是查看LongDatePattern来确定特定文化和相应分隔符的日/月/年顺序,并根据它创建自定义字符串。
附注:
答案 2 :(得分:0)
有点低眉但它有效...
CultureInfo ci = CultureInfo.CurrentUICulture;
string longtimepattern = ci.DateTimeFormat.LongTimePattern;
longtimepattern = longtimepattern.Replace("m", "mm").Replace("mmmm", "mm") ;
longtimepattern = longtimepattern.Replace("h", "hh").Replace("hhhh", "hh");
longtimepattern = longtimepattern.Replace("H", "HH").Replace("HHHH", "HH");
longtimepattern = longtimepattern.Replace("s", "ss").Replace("ssss", "ss");
string shortdatepattern = ci.DateTimeFormat.ShortDatePattern;
shortdatepattern = shortdatepattern.Replace("d", "dd").Replace("dddd", "dd");
shortdatepattern = shortdatepattern.Replace("M", "MM").Replace("MMMM", "MM");
string datestr = new DateTime(obj.TestDateTime_utc).ToLocalTime().ToString(shortdatepattern + " " + longtimepattern);
答案 3 :(得分:0)
public static class DateTimeExtension
{
public static string GetLocaleDateTimeFormating(this DateTime T )
{
DateTimeFormatInfo sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat;
string customFormat = sysUIFormat.ShortDatePattern.Replace("d", "dd").Replace("M", "MM");
customFormat += " " + sysUIFormat.ShortTimePattern.Replace("h", "hh").Replace("H", "HH");
string newDate = T.ToString(customFormat);
return newDate;
}
}
获取日期时间格式化值
this.textBox1.Text = DateTime.Now.GetLocaleDateTimeFormating();