[英]How i can extract year from datetime.now?
我希望用戶輸入車輛制造年份,但不能超過今年。 例如今天是2015年,我不希望他們輸入2020年。但是2016年還可以。 這是我的代碼。
property = validationContext.ObjectType.GetProperty("VehicleYear");
string vehicleYear = Convert.ToString(property.GetValue(validationContext.ObjectInstance, null));
if (!string.IsNullOrWhiteSpace(vehicleYear) && vehicleYear.Length == 4 && Convert.ToInt16(vehicleYear) >= 1980)
{
isVehicleOlderThan1981 = true;
}
else
{
isVehicleOlderThan1981 = false;
else if (value != null && Convert.ToDateTime(value) < DateTime.Now)
{
return new ValidationResult(this.ErrorMessage);
}
我只想從DatetTime.now獲得一年
抱歉,我是編程新手。
要獲取任何日期(包括DateTime.Now)的年部分,請使用以下命令:
DateTime.Now.Year
else if (value != null && Convert.ToDateTime(value) > DateTime.Now.AddYears(10))
{
//validation error
}
嘗試這個:
DateTime.Now.Year
您可能還想看看TryParse方法,它將簡化您的代碼。 即
int i;
if(int.TryParse("VehicleYear", out i)
{
//successful conversion, use int i for your comparisons etc.
}
else
{
//wasn't a valid year (can't be converted)
}
您需要使用DateTime
Year Year
屬性。 您的else if
可能看起來像:
else if (value != null && Convert.ToDateTime(value).Year < DateTime.Now.Year)
注意: Convert.ToDateTime(value).Year
。如果value
沒有正確的日期, Convert.ToDateTime(value).Year
會向您尖叫。
我嘗試清理一下代碼並使代碼更具邏輯性(還附上了您要查找的答案):
property = validationContext.ObjectType.GetProperty("VehicleYear");
var value = property.GetValue(validationContext.ObjectInstance, null);
int inputNumber;
//First check if input is number
if (!int.TryParse(value, out inputNumber))
{
this.ErrorMessage = "Input is not an integer!"
//you could also throw an exception here (depends on your error handling)
return new ValidationResult(this.ErrorMessage);
}
//retrieves the number of digits
int countDigits = Math.Floor(Math.Log10(year) + 1);
if (countDigits != 4)
{
this.ErrorMessage = String.Format("Input has {0} digits!",countDigits);
return new ValidationResult(this.ErrorMessage);
}
if (inputNumber > (DateTime.Now.Year + 1))
{
this.ErrorMessage = "Year is in the future!";
return new ValidationResult(this.ErrorMessage);
}
//inputNumber is now a valid year!
if(inputNumber > 1980)
{
isVehicleOlderThan1981 = true;
} else {
isVehicleOlderThan1981 = false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.