这对你们来说可能是一个非常基本的问题,但我是这个世界的新手并且每天都在努力学习。我在标准dbo.AspNetUsers表中添加了一些列。其中一个是我想与当前DateTime进行比较的日期。数据库中的日期需要在将来,否则不应该允许查看页面。
我在控制器中试过了一些东西:
public string LicenseDate { get; set; }
public string CurrentDate = DateTime.Now.ToString("dd-MM-yyyy");
public ActionResult Index()
if ((LicenseDate.Date - DateTime.Today).Days > 1)
{ do someting }
else
return RedirectToAction("../Home/Buy");
有人能指出我正确的方向吗? 谢谢!
答案 0 :(得分:1)
我只是使用DateTime.Compare
:
if (DateTime.Compare(DateTime.Parse(LicenseDate.Date), DateTime.UtcNow) > 0)
{
//License Date Later
}
else
{
//License Date Equal To Or Earlier
}
假设LicenseDate
是有效的日期字符串。
答案 1 :(得分:0)
public System.DateTime current = System.DateTime.Now;
public System.DateTime Licensedate {get; set}
if( Licensedate.Subtract(current).TotalDays >1 ){
//... do somethink
}
的TotalDays property
答案 2 :(得分:0)
有几点需要注意:
因此,以下更新的代码可以让您更接近:
public string LicenseDate { get; set; }
public string CurrentDate = DateTime.Now.ToString("dd-MM-yyyy");
public ActionResult Index() {
var licenseDateTime = Convert.ToDateTime(LicenseDate);
if ((licenseDateTime.Subtract(DateTime.Today)).TotalDays > 1)
{
// do something
} else {
return RedirectToAction("../Home/Buy");
}
}
希望有所帮助!
答案 3 :(得分:0)
感谢大家的建议!我尝试了一些选项,我没有任何错误。 但它没有工作,因为我认为LicenseDate没有从数据库中“加载”。看起来当前日期与当前日期进行比较:) 我确保数据库中的字段是Datetime类型,并在开头声明:
public DateTime LicenseDate { get; set; }
这就是我的表格:
CREATE TABLE [dbo].[AspNetUsers] (
[Id] NVARCHAR (128) NOT NULL,
[UserName] NVARCHAR (MAX) NULL,
[PasswordHash] NVARCHAR (MAX) NULL,
[SecurityStamp] NVARCHAR (MAX) NULL,
[Name] NVARCHAR (MAX) NULL,
[Surname] NVARCHAR (MAX) NULL,
[Company] NVARCHAR (MAX) NULL,
[Street] NVARCHAR (MAX) NULL,
[ZIPcode] NVARCHAR (MAX) NULL,
[City] NVARCHAR (MAX) NULL,
[Country] NVARCHAR (MAX) NULL,
[Phone] NVARCHAR (MAX) NULL,
[Email] NVARCHAR (MAX) NULL,
[Discriminator] NVARCHAR (128) NOT NULL,
[IPAddress] NVARCHAR (MAX) NULL,
[RegisterDate] DATETIME NULL,
[LicenseDate] DATETIME NULL,
CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC)
);
再次感谢您对此进行调查。