我想在 C#中将输入字符串格式化为MM/dd/yyyy hh:mm:ss格式。
输入字符串的格式MM/dd/yyyy hh:mm:ss
例如:"04/30/2013 23:00"
我尝试Convert.ToDateTime()
了函数,但它认为 4 作为日期,3 作为月份,这不是我想要的。实际上月份是 04,日期是 03。
我也尝试DateTime.ParseExact()
了函数,但是得到了异常。
我收到错误:
字符串未被识别为有效的日期时间。
您的日期时间字符串不包含任何秒数。您需要在格式中反映这一点(删除:ss
)。
此外,您需要指定H
而不是h
使用 24 小时时间:
DateTime.ParseExact("04/30/2013 23:00", "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture)
浏览此处获取更多信息:
你可以使用DateTime.ParseExact()
方法。
使用指定的格式和特定于区域性的格式信息将日期和时间的指定字符串表示形式转换为其等效的 DateTime。字符串表示的格式必须与指定的格式完全匹配。
DateTime date = DateTime.ParseExact("04/30/2013 23:00",
"MM/dd/yyyy HH:mm",
CultureInfo.InvariantCulture);
这是一个DEMO
.
hh
从 01 到 12 表示 12HH
小时制,从 00 到 23 表示 24 小时制。
如需更多信息,请查看Custom Date and Time Format Strings
试试这个:
string strTime = "04/30/2013 23:00";
DateTime dtTime;
if(DateTime.TryParseExact(strTime, "MM/dd/yyyy HH:mm",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out dtTime))
{
Console.WriteLine(dtTime);
}
如果您的字符串是 2019 年 6 月 15 日,这也可能是问题所在。DateTime Parse 预计它是 2019 年 6 月 15 日。
所以首先用斜线分割它
var dateParts = "6/15/2019"
var month = dateParts[0].PadLeft(2, '0');
var day = dateParts[1].PadLeft(2, '0');
var year = dateParts[2]
var properFormat = month + "/" +day +"/" + year;
现在您可以使用 DateTime.Parse(properFormat, "MM/dd/yyyy")。这很奇怪,但这只是对我有用的东西。
改变文化并尝试这样可能对您有用
string[] formats= { "MM/dd/yyyy HH:mm" }
var dateTime = DateTime.ParseExact("04/30/2013 23:00",
formats, new CultureInfo("en-US"), DateTimeStyles.None);
检查详细信息:DateTime.ParseExact 方法(String、String[]、IFormatProvider、DateTimeStyles)
DateTime dt1 = DateTime.ParseExact([YourDate], "dd-MM-yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
请注意使用 HH(24 小时制)而不是 hh(12 小时制),以及 InvariantCulture 的使用,因为某些文化使用斜线以外的分隔符。
例如,如果文化是 de-DE,则格式“dd/MM/yyyy”将期望句点作为分隔符 (31.01.2011)。
下面的代码对我有用:
string _stDate = Convert.ToDateTime(DateTime.Today.AddMonths(-12)).ToString("MM/dd/yyyy");
String format ="MM/dd/yyyy";
IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);
DateTime _Startdate = DateTime.ParseExact(_stDate, format, culture);
您可以使用这种类型格式(从 sql server 获取格式化数据)
FORMAT(转换(日期时间,'16/04/2018 10:52:20',103),'dd/MM/yyyy HH:mm:ss','en-us')
转换(VARCHAR,转换(日期时间,'16/04/2018 10:52:20',103),120)