Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将DateTime.Now存储为ddMMyyyy格式,无需字符串操作_C#_Entity Framework - Fatal编程技术网

C# 将DateTime.Now存储为ddMMyyyy格式,无需字符串操作

C# 将DateTime.Now存储为ddMMyyyy格式,无需字符串操作,c#,entity-framework,C#,Entity Framework,是否有任何可能的方法来保存DateTime.Now格式,而不使用ToString()。因为无论何时使用字符串操作,实体框架都不接受该语句。我需要以ddMMyyyy的日期格式向数据库添加日期时间。有什么办法吗 将SQL Server数据库数据类型从“datetime”更改为“date”?来自datetime.Parse()方法() 因此,您可以: var dateTime = DateTime.Parse("01012001"); 这将为您提供一个DateTime类型化对象 如果需要指定要使用的

是否有任何可能的方法来保存DateTime.Now格式,而不使用
ToString()
。因为无论何时使用字符串操作,实体框架都不接受该语句。我需要以
ddMMyyyy
的日期格式向数据库添加日期时间。有什么办法吗

将SQL Server数据库数据类型从“datetime”更改为“date”?

来自
datetime.Parse()方法()

因此,您可以:

var dateTime = DateTime.Parse("01012001");
这将为您提供一个
DateTime
类型化对象

如果需要指定要使用的日期格式,可以使用
DateTime.ParseExact
()

在这种情况下(您使用的是英式日期格式),您会使用:

只有在我们讨论字符串时,格式“ddmmyyyyy”(或任何其他格式)才有意义

如果您只需要程序中的日、月和年,您仍然可以使用日期时间类。 您只需忽略其他属性,如分钟、小时等

DateTime now = DateTime.Now;
Method(now.Day, now.Month, now.Year);


将日期存储为“ddMMyyyy”将是愚蠢和适得其反的。首先,您需要一个
varchar(8)
,而不是
DATE
DATETIME

除此之外,您将如何使用
排序依据
,或在
查询之间使用
,或执行
myDate>someValue
/
myDate
查询对其进行排序?不能使用这样格式的日期字符串

此外,诸如“ddMMyyyy”之类的符号是底层值的用户界面表示法。数据库几乎不应该存储用户界面表示,这是。。。你猜对了。。。用户界面


最好忘了它,否则就准备好面对可怕的后果。

这可能是一种误解。datetime的显示格式和数据库存储格式相互独立。你能扩展一下“…框架不接受…”并向我们展示你的代码吗?不要将日期时间存储为字符串“以日期格式”表示为字符串。要么你想要字符串,要么你不想要。如果您不需要字符串,则没有格式—您只需要一个日期/时间值。如果需要字符串,应使用
ToString
。我强烈建议不要将其存储为字符串。问题不在您的C#代码中,如果您只想存储日期,而不是时间,那么您应该在SQL表中使用数据类型date,而不是datetime,正如@Yanga在下面的回答中所建议的那样。在EF中,您可以使用属性[Column(Typename=“date”)]来指定这一点,更多信息请查看此问题的答案:这将截断时间部分。但它并没有强制执行特定的显示格式ddMMyyyy。@dlatikay他的问题不是显示数据,而是存储数据,他试图使用ToString()来存储数据,只获取日期而不是时间。正如Yanga所建议的,他应该在SQL表列中使用数据类型date。请看我对这个问题的评论,了解更多信息。或者因此在表示层中使用
ToString(“ddMMyyyy”)
。或者,或者存储
DateTime.Now.Date
而不是
DateTime.Now
。OP改进之前的所有猜测。@dlatikay我的问题不是关于ToString,当我尝试DateTime时。现在要使用EntityFramework将日期添加到DB中,日期将保存为MMDDYYY格式。相反,我需要以ddMMyyyy格式存储日期,而不使用ToString()ok。这是对datetime类型的值的内部表示之间的差异以及它在不同应用程序中的显示方式的根本误解。该格式不是类型本身的属性-在.NET或SQL中都不是。请参考Jon Skeet对您的作品的评论,我不知道如何更清楚地表达;仍有一些供应商始终以yyyyMMdd格式将日期存储为字符串,例如SAP的ABAP环境中的存储类型,该存储类型用于以字符(8)的形式进入数据库层。虽然这可能是由于历史/向后兼容性/可移植性的原因,不建议这样做,但它表明,首先肯定不是所有人都认为这样做很愚蠢(不过对于ddMMyyyy,我同意)。
DateTime now = DateTime.Now;
Method(now.Day, now.Month, now.Year);
DateTime emptyDateTime = new DateTime();

// in this case emptyDateTime values are the following:
emptyDateTime.Year:   1
emptyDateTime.Month:  1
emptyDateTime.Day:    1
emptyDateTime.Hour:   0
emptyDateTime.Minute: 0
emptyDateTime.Second: 0