我有一个字符串(“CompletionDate”),其中包含值“2/28/2017 5:24:00 PM” 现在我有2个变量(EDate和ETime)。我想将日期分配给EDate(即2/28/2017)和Time to ETime(即5:24:00 PM)。 如何从单个字符串中拆分日期和时间。 请帮助。 我现在的方法是:
string CompletionDate = string.Empty;
string ProjectEDate = string.Empty;
string ProjectETime = string.Empty;
CompletionDate = "2017-03-29 12:58:00";
DateTime dt = DateTime.ParseExact(CompletionDate, "yyyy-MM-dd", CultureInfo.CreateSpecificCulture("en-us"));
DateTime dt1 = DateTime.ParseExact(CompletionDate, "HH:mm:ss", CultureInfo.CreateSpecificCulture("en-us"));
var ProjectEDate = dt.ToString();
var ProjectETime = dt1.ToString();
但它抛出的异常是字符串格式不正确。请帮助
答案 0 :(得分:4)
CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-us");
DateTime dt = DateTime.ParseExact(CompletionDate, "yyyy-MM-dd HH:mm:ss", enUS);
var ProjectEDate = dt.Date.ToString();
var ProjectETime = dt.TimeOfDay.ToString();
答案 1 :(得分:3)
DateTime.ParseExact(CompletionDate, "yyy-MM-dd", ...
您在日期格式字符串中缺少第4个“y”:
"yyyy-MM-dd"
^
here
和: String was not recognized as a valid DateTime " format dd/MM/yyyy"
答案 2 :(得分:3)
您需要指定与解析方法的输入字符串相同的完整格式。
DateTime dt = DateTime.ParseExact(CompletionDate, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.CreateSpecificCulture("en-us"));
要获得结果,您可以在DateTime中默认使用以下方法。
dt.ToShortTimeString()
"12:58 PM"
dt.ToLongTimeString()
"12:58:00 PM"
dt.ToLongDateString()
"Wednesday, March 29, 2017"
dt.ToShortDateString()
"3/29/2017"
或者您可以指定ToString方法的格式。
dt.ToString("yyyy-MM-dd")
"2017-03-29"
dt.ToString("HH:mm:ss")
"12:58:00"
答案 3 :(得分:2)
为什么要解析为DateTime
,然后再次使用ToString
转换为字符串?当你想要的只是分开时间和你知道确切的格式时,你不能简单地使用String.Split
吗?
var CompletionDate = "2017-03-29 12:58:00";
var tmp = CompletionDate.Split(' ');
var ProjectEDate = tmp[0];
var ProjectETime = tmp[1];