C# 如何在mvc中将字符串转换为当前时间的DateTime对象

C# 如何在mvc中将字符串转换为当前时间的DateTime对象,c#,asp.net,date,datetime,C#,Asp.net,Date,Datetime,但是在dt中,它给了我2017年12月23日12:00:00 AM 我必须使用什么方法将此字符串转换为当前时间的dd/mm/yyyyy,就像我在03:20 PM运行此代码一样我希望对象中的“23/12/2017 03:20 PM” 我有一个ASP.NET MVC操作,它接受一个日期作为字符串,并将其保存到一个数据库表中,在一个类型为date的字段中 我正在保存我的dt对象。我想将我的日期保存为DD/MM/YYYY,这样就不需要更改其顺序。现在dt对象是MM/DD/YYYY格式。因此,当我浏览表格

但是在
dt
中,它给了我2017年12月23日12:00:00 AM

我必须使用什么方法将此字符串转换为当前时间的
dd/mm/yyyyy
,就像我在
03:20 PM运行此代码一样
我希望
对象中的
“23/12/2017 03:20 PM”

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

我正在保存我的dt对象。我想将我的日期保存为DD/MM/YYYY,这样就不需要更改其顺序。现在dt对象是MM/DD/YYYY格式。因此,当我浏览表格数据时,它会以MM/DD/YYYY的顺序显示数据(日期)。我想以DD/MM/YYYY的形式对dt对象进行排序,它以DD/MM/YYYY的形式保存在表中,这样每当我从表中获取值时,我就不必更改顺序

string date = "23/12/2017";

DateTime dt = DateTime.ParseExact(
  date, 
 "dd/MM/yyyy hh:mm:ss tt", 
  CultureInfo.InvariantCulture);
在视图中,我正在以MM/DD/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());
}
这可能有效

/// 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());
}

这里只是一些简单的例子,我用它将字符串转换为datetime,并按时区获取datetime。这个问题有点不清楚,所以这可能会增加一个解决方案

 DateTime dt = DateTime.ParseExact(
            date,
            "dd/MM/yyyy",
            CultureInfo.InvariantCulture).Add(DateTime.Now.TimeOfDay);
        Console.WriteLine(dt);
要设置字符串,请执行以下操作:

string date;
DateTime dt = Convert.ToDateTime(date);
获取本地语言的currentTime:

dt.ToString("dd-MM-yyyy", CultureInfo.InvariantCulture);

这里只是一些简单的例子,我用它将字符串转换为datetime,并按时区获取datetime。这个问题有点不清楚,所以这可能会增加一个解决方案

 DateTime dt = DateTime.ParseExact(
            date,
            "dd/MM/yyyy",
            CultureInfo.InvariantCulture).Add(DateTime.Now.TimeOfDay);
        Console.WriteLine(dt);
要设置字符串,请执行以下操作:

string date;
DateTime dt = Convert.ToDateTime(date);
获取本地语言的currentTime:

dt.ToString("dd-MM-yyyy", CultureInfo.InvariantCulture);

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

public static DateTime GetCurrentTime()
    {
        TimeZoneInfo timeZone;
        DateTime time;
        try
        {
            timeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
            time = TimeZoneInfo.ConvertTime(DateTime.UtcNow, timeZone);
        }
        catch (Exception)
        {
            try
            {
                timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
                time = TimeZoneInfo.ConvertTime(DateTime.UtcNow, timeZone);
            }
            catch (Exception)
            {
                //logg not succeed
                time = DateTime.Now;
            }

        }
        return time;
    }
许多国家使用dd/MM/YYYY格式,因此即使您不知道实际的语言环境,也可以使用dd/MM/YYYY格式作为备用格式

如果您不知道区域设置,只知道格式,则可以使用ParseExact仅解析日期:

返回值是值为2017年12月23日的日期和当前时间


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

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

public static DateTime GetCurrentTime()
    {
        TimeZoneInfo timeZone;
        DateTime time;
        try
        {
            timeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
            time = TimeZoneInfo.ConvertTime(DateTime.UtcNow, timeZone);
        }
        catch (Exception)
        {
            try
            {
                timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
                time = TimeZoneInfo.ConvertTime(DateTime.UtcNow, timeZone);
            }
            catch (Exception)
            {
                //logg not succeed
                time = DateTime.Now;
            }

        }
        return time;
    }
许多国家使用dd/MM/YYYY格式,因此即使您不知道实际的语言环境,也可以使用dd/MM/YYYY格式作为备用格式

如果您不知道区域设置,只知道格式,则可以使用ParseExact仅解析日期:

返回值是值为2017年12月23日的日期和当前时间



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

您的意思是“2017年12月23日03:20:00 PM”?如果不是,为什么你会失去20分钟?您希望使用哪个时区作为时间-系统时区、UTC或其他?(请注意,这实际上与ASP.NET无关。)我希望您当前的代码会抛出一个异常,因为您没有给出所声明的格式。请提供一份报告。(事实上,它甚至不会编译,因为您试图解析
date
而不是
s
),它仍然会抛出异常。请尽力提供一个您实际运行过的。由于您正在解析一个没有时间的日期时间,您应该会得到您看到的结果。如果愿意,您可以添加当前时间,只需添加
DateTime.TimeOfDay
我为代码创建了一个DotNetFiddle,它甚至没有运行:非常感谢您指出错误。但是它在asp.NET中运行良好你是说“2017年12月23日03:20:00下午”吗?如果不是,为什么你会失去20分钟?您希望使用哪个时区作为时间-系统时区、UTC或其他?(请注意,这实际上与ASP.NET无关。)我希望您当前的代码会抛出一个异常,因为您没有给出所声明的格式。请提供一份报告。(事实上,它甚至不会编译,因为您试图解析
date
而不是
s
),它仍然会抛出异常。请尽力提供一个您实际运行过的。由于您正在解析一个没有时间的日期时间,您应该会得到您看到的结果。如果愿意,您可以添加当前时间,只需添加
DateTime.TimeOfDay
我为代码创建了一个DotNetFiddle,它甚至没有运行:非常感谢您指出错误。但是它在asp.NET中运行得很好虽然这可以做OP想要做的事情,但OP想要将当前时间添加到解析的日期中仍然很奇怪(如果不能保证日期是当前日期,那么这是您想要解析日期的唯一原因)@TimothyGroote:这并不特别奇怪。例如,假设您正在编写一个日历应用程序,并且正在创建一个新事件。用户可以先选择日期,然后将日期/时间默认为“指定日期的当前时间”。@Azeem112日期没有格式。您是否混淆了调试器显示的实际值?或者您是否尝试将日期格式化为字符串而不指定非美国地区?您是否像大多数开发人员一样使用美国地区?@Azeem112同样,日期没有格式。它们是二进制值。如果您不相信我或文档,请检查
.Month
属性。现在是12点。只有将二进制值转换为字符串时,格式才会起作用。手表变量必须将日期转换为字符串才能显示。如果你展开它,你会看到
Month
是12<代码>控制台。WriteLine也必须将值转换为string@Azeem112什么数据库?你从来没有提到过数据库。没什么c