【问题标题】:Date picker can't use custom format日期选择器不能使用自定义格式
【发布时间】:2018-11-02 10:25:56
【问题描述】:

在我的 WPF 项目中,我有一个 DatePicker,但如果我输出它,它会给我 2 Nov 2018。

但我需要它作为 2018-10-2,因为我想要它用于 SQL。

我试过这段代码:

dpStart.Format = DateTimePickerFormat.Custom
DateTimePicker1.CustomFormat = "dd-MM-yyyy"

但 Visual Studio 说日期选择器没有格式。

我做错了什么/有没有一种简单的方法可以将 DatePicker 格式转换为 SQL?

【问题讨论】:

  • 您能分享您的查看代码吗?实际的文本框。你如何绑定它
  • 您应该将数据存储为日期时间,而不是数据库中的字符串。

标签: c# sql wpf datepicker


【解决方案1】:

但我需要它作为 2018-10-2,因为我想要它用于 SQL。

DatePicker 控件存储的DateTime 值没有特定格式。您可以在将值转换为 string 时应用格式:

string formattedDate = dpStart.SelectedDate.Value.ToString("yyyy-MM-dd");

但您确实应该考虑将实际的 DateTime 值而不是格式化的 string 传递给您的数据访问层。

【讨论】:

  • 谢谢,我怎样才能给它 DateTime 值而不是字符串?我的查询字符串是这样构建的:string query = $"INSERT INTO Film (ProdTitel, Titel, Beginn, Abgeschlossen, Kategorie, Notiz) VALUES(\"{PTitel}\", \"{Titel}\", \"{Beginn}\", \"{End}\", \"{Kat}\", \"{Notiz}\");";
  • @TimothyLukasH.:你应该使用参数。但是,如果您有其他问题,请提出一个新问题。
【解决方案2】:
<Style TargetType="{x:Type DatePickerTextBox}">
    <Setter Property="Control.Template">
        <Setter.Value>
            <ControlTemplate>
                <TextBox x:Name="PART_TextBox"
                     Text="{Binding Path=SelectedDate, StringFormat='dd-MM-yyyy', 
                     RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

使用上面的代码将DatePicker控件的日期显示格式改为“dd-MM-yyyy”

【讨论】:

  • 您可以在App.xaml中编写这段代码,以便应用程序中包含的所有DatePicker控件都以上述格式显示日期。
【解决方案3】:

你可以这样做

 DateTime dpStartDate = (DateTime)dpStart.SelectedDate;
 string result = dpStartDate.ToString("yyyy-MM-dd");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多