根据用户设置设置日期和时间的格式,但添加前导零

本文关键字:设置 添加 格式 用户 日期 时间 | 更新日期: 2023-09-27 18:30:57

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

根据用户设置设置日期和时间的格式,但添加前导零

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

您可以基于CultureInfo.CurrentCulture构造自定义CultureInfoDateTimeFormatInfo对象,但不要直接从 souce 区域性复制ShortDatePattern,而是将出现的"M"或"d"的任何单字母分别替换为"MM"和"dd"。

不能同时使用默认格式和自定义格式。

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

旁注:

  • 相反,您可以考虑简单地用空格对齐文本表中的结果值。
  • 如果您希望数据用于除人类消费以外的任何用途,则使用通用格式(可能具有 UTC 值)会更好。

有点低眉顺眼,但它有效...

                    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);
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();