0

有什么方法可以将 DatePicker 的返回值更改为“yyyy-MM-dd”的格式?我将值插入到 SQLite 数据库中,因此它必须采用该格式才能对值执行 datetime() 语句。

 DateTime formatStartDate = DateTime.Parse(StartDate);
 StartDate= formatStartDate.ToString("yyyy-dd-MM");

 DateTime formatEndDate = DateTime.Parse(EndDate);
 EndDate = formatEndDate.ToString("yyyy-dd-MM");

这就是我一直在做的事情,它在某种程度上有效。当我将字符串设置为“yyyy-MM-dd”时,它会更改它并以“yyyy-dd-MM”的形式插入数据库,所以我不得不将字符串更改为“yyyy-dd-MM”解决这个问题,它将我希望它以“yyyy-MM-dd”格式(奇怪)插入数据库中。

我可以使用它,因为它可以做我想做的事情,即使它没有意义,但是当我尝试验证 StartDate 和 EndDate 以便无法选择“现在”之前的日期时,它一定会感到困惑,因为我的代码中有很多不同的日期格式,它试图将上面的格式化日期与 DatePicker 附带的默认日期值进行比较。

我如何验证;

 if (DateTime.Parse(StartDate) < DateTime.Now)
    MessageBox.Show("Please select a start date that is today or in the future.");
 if (DateTime.Parse(EndDate) < DateTime.Now)
     MessageBox.Show("Please select an end date that is today or in the future.");

看起来像一个简单的修复,但我真的无法在网上找到任何解决方法。我读过的大多数帖子或文章似乎都只是处理前端格式。有什么方法可以将 DatePicker 返回的值更改为“yyyy-MM-dd”?

(StartDate 和 EndDate 是绑定到 DatePickers 的字符串)

编辑;

                <tk:DatePicker 
                    Grid.Row="1"
                    Grid.Column="0"
                    FontSize="20"
                    Value="{Binding StartDate, Mode=TwoWay}"
                    Background="LightGray" 
                    Foreground="#b71918"
                    BorderThickness="0"
                    Width="200"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Top"/>

                <tk:DatePicker 
                    Grid.Row="1"
                    Grid.Column="1"
                    FontSize="20"
                    Value="{Binding EndDate, Mode=TwoWay}"                 
                    Background="LightGray" 
                    Foreground="#b71918"
                    BorderThickness="0"
                    Width="200"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Top"/>

在我的保存按钮中(我希望格式为“yyyy-MM-dd”,但插入时它会更改为“yyyy-dd-MM”,所以我格式化为“yyyy-dd-MM”并插入为“yyyy- MM-dd”,我真正想要的方式);

                DateTime formatStartDate = DateTime.Parse(StartDate);
                string fsd = formatStartDate.ToString("yyyy-dd-MM");

                DateTime formatEndDate = DateTime.Parse(EndDate);
                string fed = formatEndDate.ToString("yyyy-dd-MM");

                // gets all confused cause of the above formatting
                if (DateTime.Parse(StartDate) < DateTime.Now)
                    MessageBox.Show("Please select a start date that is today or in the future.");

                if (DateTime.Parse(EndDate) < DateTime.Now)
                    MessageBox.Show("Please select an end date that is today or in the future.");

                var insertGoal = new GoalsTrackerModel
                {
                    GoalName = GoalName,
                    GoalDesc = GoalDesc,
                    StartDate = fsd,
                    EndDate = fed,
                    IsOpen = 1,
                    IsComplete = 0
                };
                _dbHelper.Insert<GoalsTrackerModel>(insertGoal);
                MessageBox.Show("New goal saved. Good luck!");

    public string StartDate
    {
        get { return _startDate; }
        set
        {
            if (_startDate != value)
                _startDate = value;

            OnPropertyChanged("StartDate");
        }
    }

    public string EndDate
    {
        get { return _endDate; }
        set
        {
            if (_endDate != value)
                _endDate = value;

            OnPropertyChanged("EndDate");
        }
    }
4

0 回答 0