问题:我们只需要从DateTime组件中的对象中提取时间Syncfusion SfTimePicker,避免由于最小日期而导致的错误(该组件仅支持从 2001 年开始的日期)。
细节:
- 我正在使用
SfTimePicker(Blazor) 显示DateTime.只有时间部分很重要,日期并不重要。 - 如果对象的日期早于 2001 年,则该组件将以红色突出显示。
- 我尝试使用 来改变日期
.AddYears(2000),这有效,但我不确定这种方法的正确性
问题:
如何显示日期,以便没有错误,并且不添加代码(.AddYears(2000)),我可能会忘记,然后它可能会产生意外的结果(?)或者这是转换的实践方式?
@page "/timePicker"
@using Syncfusion.Blazor.Calendars
<SfTimePicker TValue="DateTime" @bind-Value="@TimeValue"></SfTimePicker>
<p>TimeValue ===> @TimeValue</p>
<SfTimePicker TValue="DateTime" @bind-Value="@TimeValue2"></SfTimePicker>
<p>TimeValue2 ===> @TimeValue2</p>
@code {
public DateTime TimeValue { get; set; } = DateTime.MinValue.AddYears(2000);
public DateTime TimeValue2 { get; set; } = DateTime.MinValue;
}
我还尝试将对象带到最小日期C#(即01/01/0001),但结果也以红色突出显示
var hour = DateTime.Now;
@if (Data.MyProperty != null)
{
hour = new DateTime(1, 1, 1, Data.MyProperty.Hour, Data.MyProperty.Minute, 0);
}
我也尝试使用TimeSpan,它删除了红色突出显示,但该组件停止工作......
TimeSpan planningTime = Data.MyProperty.TimeOfDay;
<Syncfusion.Blazor.Calendars.SfTimePicker TValue="TimeSpan"
@bind-Value="@planningTime">
</Syncfusion.Blazor.Calendars.SfTimePicker>
我也尝试过使用TimeOnly
TimeOnly planningTime = TimeOnly.FromDateTime(Data.MyProperty);
<Syncfusion.Blazor.Calendars.SfTimePicker TValue="TimeOnly" @bind-Value="@planningTime">
</Syncfusion.Blazor.Calendars.SfTimePicker>

Syncfusion 支持回答了这个问题,我将把解决方案留在这里。
您可以继续使用
DateTime,但设置日期组件,这将允许您在允许的间隔之前Min/Max不包含日期,特别是因为我们只需要时间。Min="DateTime.MinValue" Max="DateTime.MaxValue"该组件工作正常,没有红色边框。