DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum.Text);
txtDatumDokum.Text就像“09.09.2011”。
但是我收到FormatException错误。我必须解析日期吗?
答案 0 :(得分:3)
尝试使用 dd.MM.yyyy 格式字符串的DateTime.ParseExact
DateTime.ParseExact(txtDatumDokum.Text, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None);
答案 1 :(得分:1)
不好看,无论如何试试这个:
string s = "09.09.2011";
DateTime dt = Convert.ToDateTime(
s.Replace(".",
new System.Globalization.DateTimeFormatInfo().DateSeparator));
答案 2 :(得分:0)
您需要告诉我们为什么文本输入正在使用此格式。如果是因为用户以这种方式输入,那么您需要确保格式与Thread.CurrentCulture.DateTimeFormat.ShortDatePattern
给出的格式相匹配。改变文化(通过设定
Thread.CurrentCulture
)到适当的值将解决您的问题。
如果你应该解析输入而不管它是什么格式,那么你需要先做一些手动处理(也许用string.Replace
从输入中删除空格和其他分隔符,然后尝试使用DateTime.ParseExact
和已知格式字符串解析日期。
但这一切都取决于为什么输入具有该格式,以及为什么您的应用程序的当前文化与之不匹配。
答案 3 :(得分:0)
你可以尝试这个,TryParse避免解析异常..然后你只需要检查结果以确保它被解析。
DateTime datuMDokumenta;
bool result = DateTime.TryParse(txtDatumDokum.Text, out datuMDokumenta);
您必须确定这是否适合您的应用程序。
查看此示例: http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx
根据你给出的日期判断你需要包含一种文化,de-DE接受01.01.11类型的日期,但我不确定你真正想要使用哪一种,你需要决定......代码看起来像这样:
using System.Globalization;
DateTime datuMDokumenta;
bool result = DateTime.TryParse(txtDatumDokum.Text, CultureInfo.CreateSpecificCulture("de-DE"), DateTimeStyles.None, out datuMDokumenta);
可在此处找到文化列表,为您选择合适的文化: http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.71%29.aspx
这里的优点是这段代码有点工作,但很难打破。假设您在TextBox上使用自由文本条目,则不希望抛出异常。
答案 4 :(得分:0)
是的,您必须解析当前文化中的输入日期。
string[] format = new string[] { "dd.MM.yyyy" };
string value = "09.09.2011";
DateTime datetime;
if (DateTime.TryParseExact(value, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.NoCurrentDateDefault, out datetime))
//Valid
else
//Invalid
答案 5 :(得分:0)
DateTime dt = Convert.ToDateTime(txtDatumDokum.Text)
这是对的......没有isssue
答案 6 :(得分:0)
在紧凑框架3.5下的反序列化调用期间,我之前遇到了一些意想不到的行为。
我已经从使用OpenNETCF序列化类转换为框架XML序列化类。这样做时,默认时间格式已更改,属性/公共成员的顺序也已更改。总而言之,我已经公开了一个文本属性,它将我的日期时间转换回我的VB6应用程序所期望的格式。
Dim dumbDate As New Date
Dim formats() As String = {"yyyy-MM-ddTHH:mm:ss.fffzzz", _
"yyyy-MM-dd HH:mm:ss:fffffffzzz"}
_datetimeTaken = dumbDate.ParseExact(value, formats, CultureInfo.InvariantCulture, DateTimeStyles.None)
' There is something wrong with compact framework during the Serialization calls.
' calling the shared method Date.Parse or Date.ParseExact does not produce the same
' result as calling a share method on an instance of Date. WTF?!?!?!
' The below will cause a "Format" exception.
'_datetimeTaken = Date.ParseExact(value, formats, CultureInfo.InvariantCulture, DateTimeStyles.None)
Date.blah不起作用。 dumbDate.blah有效。奇怪。
答案 7 :(得分:0)
public static void Main(string[] args)
{
var dt = new DateTime(2018, 04, 1);
Console.WriteLine(dt);
string month = dt.ToString("MMMM");
Console.WriteLine(month); //April
month = dt.ToString("MMM");
Console.WriteLine(month); //Apr
month = dt.ToString("MM");
Console.WriteLine(month); //04
Console.ReadKey();
}
答案 8 :(得分:-3)
您的代码:
DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum.Text);
尝试将其更改为:
DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum);
当你打印date/time
print datuMDokumenta.Text