我怎样才能得到一个DateTime基于字符串转换时间字符串为DateTime在C#
如: 如果我有mytime = "14:00"
我怎样才能获得与当前日期作为日期DateTime
对象,除非当前时间已经是14:00:01,那么日期应该是第二天。
我怎样才能得到一个DateTime基于字符串转换时间字符串为DateTime在C#
如: 如果我有mytime = "14:00"
我怎样才能获得与当前日期作为日期DateTime
对象,除非当前时间已经是14:00:01,那么日期应该是第二天。
这是作为具有精确格式解析DateTime
一样简单。
可实现与
var dateStr = "14:00";
var dateTime = DateTime.ParseExact(dateStr, "H:mm", null, System.Globalization.DateTimeStyles.None);
的DateTime.ParseExact()
(msdn link)方法只允许你传递你想作为你解析字符串返回DateTime
结构中的格式字符串。现在,该字符串的Date
的部分将默认为今天的日期,而不提供日期部分。
要回答的第二部分
我怎样才能获得与当前日期作为日期DateTime对象,除非已经 当前时间14点00分01秒,然后将日期应该是在第二天。
这也很简单,因为我们知道,DateTime.ParseExact将返回今天的日期(如我们havevnt提供的日期部分),我们可以把我们解析的日期比较DateTime.Now
。如果DateTime.Now
大于我们解析的日期,我们将1
天添加到我们的解析日期。
var dateStr = "14:00";
var now = DateTime.Now;
var dateTime = DateTime.ParseExact(dateStr, "H:mm", null, System.Globalization.DateTimeStyles.None);
if (now > dateTime)
dateTime = dateTime.AddDays(1);
没有为一个日期时间的构造
public DateTime(
int year,
int month,
int day,
int hour,
int minute,
int second
)
所以然后分析字符串以找到小时,分钟和秒和饲料该成此构造与由Datetime.Now.Day提供的其他参数等上。
您可以使用DateTime.TryParse()
:它将日期和时间的指定字符串表示形式转换为其DateTime
等效形式,并返回一个值,该值指示转换是否成功。
string inTime="14:00";
DateTime d;
if(DateTime.TryParse(inTime,out d))
{
Console.WriteLine("DateTime : " + d.ToString("dd-MM-yyyy HH:mm:SS"));
}
运行示例here
我想你想要做这样的事情:
string myTime = "14:00";
var v = myTime.Split(":".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
DateTime obj = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, int.Parse(v[0]), int.Parse(v[1]), DateTime.Now.Second);
如果你是一个针对某一特定的时区,你最好瞄准时区。而不是特定的时间。根据你的应用程序,如果它跨越了时区,图书馆将保护你免受时区变化的影响,并且使处理时间和日期变得更加容易。 –