TDateTime 格式在 C++ Builder 中没有改变
TDateTime format does not change in C++ Builder
我对 C++ Builder 环境完全陌生,对 C++ 也很陌生。很抱歉,如果这个问题是微不足道的。
我正在尝试更改我的应用程序中显示的日期格式。日期显示在名为 trait_sb_date_lbl
的标签中。我想将日期设置为以下格式:月(英文,如一月)日和年。
首先,我尝试获取月份。我尝试了以下代码:
TFormatSettings fmt;
TDate date;
fmt.DateSeparator = '-';
fmt.ShortDateFormat = "mmmm/d/yyyy";
trait_sb_date_lbl->Caption = DateToStr(date.CurrentDate());
我在文档中读到,使用 mmmm
作为格式的月份应该以全英文显示月份,但这不起作用。连小数点都不显示,month/day/year.
格式也不显示
有什么想法吗?
如果不想使用当前区域设置,可以直接使用FormatDateTime
:
TDate date = Date();
trait_sb_date_lbl->Caption = FormatDateTime("mmmm/d/yyyy", date);
但是,如果与 sv-SE
等语言环境一起使用,这种硬编码日期格式就不太好用了。如果您的应用程序支持几种语言环境,则使用所选语言环境创建 TFormatSettings
可能会更好 - 并在该语言环境中使用预定义的 LongDateFormat
格式。
TFormatSettings fmt = TFormatSettings::Create("sv-SE"); // one of the supported locales
trait_sb_date_lbl->Caption = FormatDateTime("dddddd", Date(), fmt);
其中 "dddddd"
变成
den 25 Februari 2020 // It's actually lacking the day. It should be "Tisdagen den ..."
而不是 "mmmm/d/yyyy"
版本:
februari-25-2020
后者是您在 sv-SE
中永远不会使用的东西。
在更改其成员之前,您没有使用默认值初始化 fmt
变量。而且你之后没有将它传递给 DateToStr()
:
TFormatSettings fmt = TFormatSettings::Create();
fmt.DateSeparator = '-';
fmt.ShortDateFormat = "mmmm/d/yyyy";
trait_sb_date_lbl->Caption = DateToStr(Date(), fmt);
我对 C++ Builder 环境完全陌生,对 C++ 也很陌生。很抱歉,如果这个问题是微不足道的。
我正在尝试更改我的应用程序中显示的日期格式。日期显示在名为 trait_sb_date_lbl
的标签中。我想将日期设置为以下格式:月(英文,如一月)日和年。
首先,我尝试获取月份。我尝试了以下代码:
TFormatSettings fmt;
TDate date;
fmt.DateSeparator = '-';
fmt.ShortDateFormat = "mmmm/d/yyyy";
trait_sb_date_lbl->Caption = DateToStr(date.CurrentDate());
我在文档中读到,使用 mmmm
作为格式的月份应该以全英文显示月份,但这不起作用。连小数点都不显示,month/day/year.
有什么想法吗?
如果不想使用当前区域设置,可以直接使用FormatDateTime
:
TDate date = Date();
trait_sb_date_lbl->Caption = FormatDateTime("mmmm/d/yyyy", date);
但是,如果与 sv-SE
等语言环境一起使用,这种硬编码日期格式就不太好用了。如果您的应用程序支持几种语言环境,则使用所选语言环境创建 TFormatSettings
可能会更好 - 并在该语言环境中使用预定义的 LongDateFormat
格式。
TFormatSettings fmt = TFormatSettings::Create("sv-SE"); // one of the supported locales
trait_sb_date_lbl->Caption = FormatDateTime("dddddd", Date(), fmt);
其中 "dddddd"
变成
den 25 Februari 2020 // It's actually lacking the day. It should be "Tisdagen den ..."
而不是 "mmmm/d/yyyy"
版本:
februari-25-2020
后者是您在 sv-SE
中永远不会使用的东西。
在更改其成员之前,您没有使用默认值初始化 fmt
变量。而且你之后没有将它传递给 DateToStr()
:
TFormatSettings fmt = TFormatSettings::Create();
fmt.DateSeparator = '-';
fmt.ShortDateFormat = "mmmm/d/yyyy";
trait_sb_date_lbl->Caption = DateToStr(Date(), fmt);