我想在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()
功能,但是获得了Exception。
我收到错误:
字符串未被识别为有效的DateTime。
答案 0 :(得分:13)
您的日期时间字符串不包含任何秒数。您需要以格式反映出来(删除:ss
)
此外,如果您使用24小时,则需要指定H
而不是h
:
DateTime.ParseExact("04/30/2013 23:00", "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture)
有关详细信息,请参阅此处:
答案 1 :(得分:5)
您可以使用DateTime.ParseExact()
方法。
将指定的日期和时间字符串表示形式转换为它 DateTime等效使用指定的格式和特定于文化 格式信息。 字符串表示的格式必须匹配 完全符合指定的格式。
DateTime date = DateTime.ParseExact("04/30/2013 23:00",
"MM/dd/yyyy HH:mm",
CultureInfo.InvariantCulture);
这是DEMO
。
hh
表示从01到12的12小时制,HH
表示从00到23的24小时制。
答案 2 :(得分:3)
试试这个:
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);
}
答案 3 :(得分:1)
改变文化并尝试这样可能对你有用
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 Method (String, String[], IFormatProvider, DateTimeStyles)
答案 4 :(得分:0)
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)。
答案 5 :(得分:0)
以下代码对我有用:
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);
答案 6 :(得分:0)
如果您的字符串是6/15/2019,这也可能是问题。 DateTime Parse预计它将为06/15/2019。
因此,请先使用斜杠
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”)。很奇怪,但这只是对我有用。
答案 7 :(得分:0)
您可以使用这种类型的格式(从sql server中获取格式化数据)
FORMAT(convert(datetime,'16 / 04/2018 10:52:20',103),'dd / MM / yyyy HH:mm:ss','en-us')
CONVERT(VARCHAR,convert(datetime,'16 / 04/2018 10:52:20',103),120)