1

我知道我可以使用 datetime.ToString("G") 从操作系统中的用户设置中获取正确的时间格式,但是我想添加前导零以确保日期/时间在列中对齐。有没有办法用前导零格式化时间(不使用自定义格式字符串)并让它以用户设置的格式输出?

4

4 回答 4

1

“G”和“g”模式取决于“d”(短日期)模式。请参阅http://msdn.microsoft.com/en-us/library/8tfzyc64.aspx

您可以基于 构建自定义CultureInfoDateTimeFormatInfo对象CultureInfo.CurrentCulture,但不要直接从源文化中复制 ,而是ShortDatePattern将任何单字母出现的“M”或“d”分别替换为“MM”和“dd”。

于 2012-04-13T16:59:52.943 回答
0

您不能同时拥有默认格式和自定义格式。

我认为您想要查看LongDatePattern以找出特定文化和相应分隔符的日/月/年顺序,并基于此创建自定义字符串。

旁注:

  • 相反,您可以考虑简单地将文本表中的结果值按空格对齐。
  • 如果您希望数据用于除人类消费之外的任何用途,则使用通用格式(可能使用 UTC 值)会更好。
于 2012-04-13T16:58:54.840 回答
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);
于 2012-04-13T19:41:00.490 回答
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();
于 2012-04-13T22:42:23.993 回答