问题描述
wpf种日期控件在来回切换页面之后 会自动变为MM/dd/yyyy格式,而实际需要的格式为yyyy-MM-dd
解决方法
1.其实是页面的语言问题在捣鬼,被变成了默认的en-US.
指定该日期控件的language为中文格式 Language=“zh-CN”
<hc:DatePicker FontSize="15" Width="200" Style="{StaticResource DatePickerExtend}" Language="zh-CN" Height="32" x:Name="Start1"/>
指定之后 确实变成了中文下的时间格式 但是是2023/3/17这种yyyy/MM/dd 还是不是我们想要的yyyy-MM-dd
2.直接在代码的Load方法或构造器方法指定语言 Dispatcher.Thread.CurrentCulture = new System.Globalization.CultureInfo(“zh-CN”);
public InnerManager()
{
InitializeComponent();
Dispatcher.Thread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");
Loaded += (e, s) => {
//写在这里也行
//Dispatcher.Thread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");
};
}
如果是计时器的,可能还会有问题,就是你在第一次进入的时候是正常的,切换页面再切回来,又错了,这是因为定时器线程在刷的时候,又把当前页面的语言设置为en-US了,这时需要在线程里边进行指定
public async void SecondsTimer(DateTime dateTime)
{
Dispatcher.Thread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");
Dispatcher.BeginInvoke(new Action(
delegate
{
timeShort.Text = dateTime.ToString("HH:mm:ss");
timeWeek.Text = dateTime.ToString("dddd");
timeYear.Text = dateTime.ToString("yyyy/MM/dd");
}));
}