Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 为DateTime show设置字符串格式_Wpf_Silverlight_Xaml_Silverlight 5.0 - Fatal编程技术网

Wpf 为DateTime show设置字符串格式

Wpf 为DateTime show设置字符串格式,wpf,silverlight,xaml,silverlight-5.0,Wpf,Silverlight,Xaml,Silverlight 5.0,无论出于何种原因,我从数据库中获取的数据都是以下格式:“830AM” 还要注意数字8之前的额外空格 我需要格式化它,以Silverlight XAML或样式显示为“08:30 AM”。 我们该怎么做呢?如果您确定传入的格式总是相同的,您可以使用获取DateTime对象,然后将其转换回字符串 要在Silverlight XAML中实现这一点,可以在绑定中使用IValueConverter。更好的做法是,对视图模型使用只读属性,该属性执行上述转换。是否尝试将其解析为DateTime或DateTime

无论出于何种原因,我从数据库中获取的数据都是以下格式:“830AM” 还要注意数字8之前的额外空格 我需要格式化它,以Silverlight XAML或样式显示为“08:30 AM”
我们该怎么做呢?

如果您确定传入的格式总是相同的,您可以使用获取DateTime对象,然后将其转换回字符串


要在Silverlight XAML中实现这一点,可以在绑定中使用
IValueConverter
。更好的做法是,对视图模型使用只读属性,该属性执行上述转换。

是否尝试将其解析为DateTime或DateTimeOffset?一旦您以该格式获得该列,以您想要的任何格式显示都非常简单。@DevWannabe创建一个SQL脚本,将该列更改为
DateTime
列,并将数据更新为正确的格式。所有其他解决方法都只是在将来给您带来麻烦的补丁。糟糕的数据模型/DB结构是所有开发人员的地狱。@devwanabe然后在XAML中使用
“{Binding MyDate,StringFormat='hh:mm tt'}
,而不使用任何转换器或其他任何东西。它们并不总是采用这种格式。创建的新记录采用良好的格式,如“08:30 AM”“但是,这个由旧软件创建并存在于数据库中的文件就在这里format@DevWannaBe在这种情况下,我真的认为最好的方法是编写一个DB脚本来清除遗留数据。如果这不可能,那么您仍然可以使用上面的方法--只需使用
TryParseExact
而不是
ParseExact
string timeStr = " 830AM";
string format = "h:mmtt";
DateTime time = DateTime.ParseExact(timeStr.Trim(), format, CultureInfo.InvariantCulture);

string timeStrFormatted = time.ToString("hh:mm tt", CultureInfo.InvariantCulture);