在C#中将DateTime转换为MM/dd/yyyy格式

10
我正在调用一个webservice,它返回的日期时间格式为"dd-MM-yyyy 00:00:00"。现在我想将它保存到数据库中。所以为了保存日期,我必须将日期格式转换为MM/dd/yyyy。我尝试了下面的代码来转换日期时间格式,但都没有成功。
1. DateTime.ParseExact(string, "MM/dd/yyyy", culture);
2. Convert.ToDateTime(string).ToString("MM/dd/yyyy",CultureInfo.InvariantCulture);

有人可以帮我解决这个问题吗?


3
所以为了保存日期,我需要将日期格式转换为MM/dd/yyyy。真的吗?我希望你能够直接传入DateTime对象。这绝对比将其转换回字符串更好。你使用的是什么数据库,并且如何插入它? - Jon Skeet
你不需要进行任何转换。日期就是日期。你可以将它存储在DateTime列中,无需进行任何类型的转换。 - Steve
1
根据René Vogt的回答,如果您没有告诉我们您使用的数据库系统和连接类型,那么我们就无法知道您的问题所在。将DateTime格式化为字符串以及将DateTime存储在数据库中是两个不同的事情。 - Jakotheshadows
5个回答

12

DateTime类型没有特定的格式,您可以直接将其保存到数据库中。但是,如果您希望将其作为特定格式的字符串使用,则可以通过以下方式实现


DateTime类型没有特定的格式,您可以直接将其保存到数据库中。但是,如果您希望将其作为特定格式的字符串使用,则可以通过以下方式实现。
//input date string as dd-MM-yyyy HH:mm:ss format
string date = "17-10-2016 20:00:00";
//dt will be DateTime type
DateTime dt = DateTime.ParseExact(date, "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);
//s will be MM/dd/yyyy format string
string s = dt.ToString("MM/dd/yyyy");

如果您将输入的date设置为DateTime类型,则可以直接获取格式化字符串。

string s1 = date.ToString("MM/dd/yyyy");

4

DateTime是一个结构体,没有关于"格式"的任何信息。

只有当您想要创建DateTime值的字符串表示时,才会使用格式。您所说的"对我无效"可能是因为调试器始终使用相同的格式来显示DateTime的值。

将该值插入到数据库中所需采取的步骤取决于数据库系统和您使用的连接类型。通常应使用参数化查询,在其中可以传递DateTime,一切都将正常工作。

如果必须直接将DateTime值放入查询字符串中,则可以简单地使用myDate.ToString("MM/dd/yyyy",CultureInfo.InvariantCulture);。但我非常确定您正在使用支持直接接受DateTime的参数化查询的数据库连接,并且不建议将该值转换回字符串表示形式。


1
var dateTime = "28-08-1993 12:12:12";
DateTime dt = DateTime.ParseExact(dateTime, "dd-MM-yyyy hh:mm:ss", CultureInfo.InvariantCulture);
var convertedDate = dt.ToString("MM/dd/yyyy");
Console.WriteLine(convertedDate);

1
DateTime date=DateTime.Now;

string result =  date.ToString("MM/dd/yyyy");

0

你也可以通过分别捕获日/月/年来实现它...

string formattedDate= Convert.ToDateTime(your_date_object).Day.ToString() + "/" + Convert.ToDateTime(your_date_object).Month.ToString() + "/" + Convert.ToDateTime(your_date_object).Year.ToString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接