如何将sql数据库中的日期与当前日期进行比较,以允许在C#mvc5中访问页面

时间:2014-02-25 17:54:34

标签: c# sql asp.net-mvc

这对你们来说可能是一个非常基本的问题,但我是这个世界的新手并且每天都在努力学习。我在标准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");

有人能指出我正确的方向吗? 谢谢!

4 个答案:

答案 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
}

Subtract Method 返回TimeSpan

TotalDays property

答案 2 :(得分:0)

有几点需要注意:

  • 你的功能需要花括号
  • 您需要在比较之前将字符串转换为日期
  • 您可以使用DateTime.Compare或DateTime.Subtract来执行您想要的操作

因此,以下更新的代码可以让您更接近:

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)
);

再次感谢您对此进行调查。