0

在我的数据库中,我存储人们必须在几分钟内完成一项任务的时间。例如 600 分钟。当我创建此任务时,我希望用户填写小时后跟分钟,例如:30:20 或 30 或 1:20。为了做到这一点,我做了以下

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:hh\:mm}")]
public TimeSpan AllocatedTime { get; set; }

public int AllocatedMinutes { get; set; }

当用户在字段中输入他的信息时,他使用分配的时间,稍后在控制器中转换为分钟。

但问题是,只要输入的时间超过 23:59,就会出现格式错误的错误。我尝试了几件事来解决这个问题,但没有成功,有人知道如何解决这个问题吗?

4

2 回答 2

0

在尝试和尝试之后......我终于想通了:

[RegularExpression(@"^[0-9][0-9]?[0-9]?(:[0-5][0-9])?$", ErrorMessage = "wrong")]
于 2014-11-11T22:46:16.317 回答
0

这不是对您问题的回答,而是对不同方法的建议。hh:mm我认为您尝试327:15

我建议使用不同的持续时间格式;比如Xd Yh ZmwhereX和分别是天、小时和分钟YZ每个部分都可以是可选的,但这将使用户更容易输入有问题的时间跨度,因为他们将输入自然时间单位。

然后,您可以使用正则表达式来尝试获取各个部分并根据值构建实际TimeSpan值。

这个正则表达式可能是一个开始:

(?:(?<days>\d+)d\s)?\s*(?:(?<hours>\d+)h\s)?\s*(?:(?<minutes>\d+)m)?

注意:我只测试了几分钟,因此它可能无法涵盖所有​​可能性,但它应该是一个足够好的开始。

于 2014-11-11T21:51:45.630 回答