如何在mvc中使用当前时间将字符串转换为DateTime对象

Aze*_*112 1 c# asp.net datetime date

string date = "23/12/2017";

DateTime dt = DateTime.ParseExact(
  date, 
 "dd/MM/yyyy hh:mm:ss tt", 
  CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

dt它给了我12/23/2017 12:00:00 AM

什么办法我必须用这个字符串转换为dd/mm/yyyy与当前的时间,因为如果我在运行此代码03:20 PM,我想"23/12/2017 03:20:00 PM"在我的dt对象

我有一个 ASP.NET MVC 操作,它接受一个日期作为字符串并将其保存到一个数据库表中,在一个类型为 DATE 的字段中。

我正在保存我的 dt 对象。我想将我的日期保存为 DD/MM/YYYY,因此我不需要更改其顺序。现在 dt 对象采用 MM/DD/YYYY 格式。所以当我浏览我的表格数据时,它会以 MM/DD/YYYY 顺序显示数据(日期)。我想将我的 dt 对象订购为 DD/MM/YYYY 以便它在表格中保存为 DD/MM/YYYY 所以每当我从我的表格中获得价值时,我都不必更改订单

/// asp.net Entities link to create connection with DataBase
    private DatabaseEntities db = new DatabaseEntities(); 

//// Method to Save date in database
    public ActionResult SaveDate(string date){
        var DateTableObject = new Date();
        DateTime dt = DateTime.ParseExact(date, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture).Add(DateTime.Now.TimeOfDay); 

       DateTableObject.Date = dt;
       db.Date.add(DateTableObject);
       db.SaveChanges();
    }

    //// Model class
    public class Date{
       public DateTime Date {set; get;}
    }

/// Method to get dates
 public ActionResult GetDates(){
   return View(db.Date.tolist());
}
Run Code Online (Sandbox Code Playgroud)

鉴于我以 MM/DD/YYYY 格式接收日期

Pan*_*vos 5

如果您知道日期字符串的正确区域性,您可以使用DateTime.Parse来解析日期,然后添加当前本地时间:

var finalDateTime = DateTime.Parse("23/12/2017",CultureInfo.GetCultureInfo("en-GB"))
                            .Add(DateTime.Now.TimeOfDay);
Run Code Online (Sandbox Code Playgroud)

许多国家/地区使用 dd/MM/YYYY 格式,因此即使您不知道实际的语言环境,也可以使用一种作为后备。

如果您不知道语言环境,只知道格式,则可以使用 ParseExact解析日期:

var finalDateTime = DateTime.ParseExact("23/12/2017","dd/MM/yyyy", CultureInfo.InvariantCulture)
                            .Add(DateTime.Now.TimeOfDay);
Run Code Online (Sandbox Code Playgroud)

返回值是一个日期,其值为 2017 年 12 月 23 日和当前时间。

不要被调试器的显示弄糊涂了。日期没有格式,它们是二进制值。不过,调试器必须以某种方式显示该值。如果像许多开发人员一样,您使用美国语言环境,您会看到日期为MM/dd/YYYY. 但是,如果您检查 Month 属性,它将是 12。