我被困在一个洞里,我不能为我的生活挖掘它自己。
这是一个高度美学的问题,但我喜欢从我的代码中得到我要求的东西。 我正在尝试将表示时间的字符串解析为DateTime变量,然后发送到textBox以及我的LINQ查询。
我想以这种格式表示我的时间:“yyyy-MM-dd hh:mm:ss”这是我从我的Select查询得到的,但是一旦我尝试解析用户写的内容在textBox到DateTime中,它给了我“1/13/2011 12:00:00 AM”,即使它的格式为“2011-01-13 00:00:00”。
我觉得我已经尝试了一切来完成这项工作,但必须有一个解决方案,你能帮助我找到它吗?我想用什么IFormatProvider?
这是我试过的:
//textBox1.Text = "2011-01-13 00:00:00";
DateTime = TimeFrom;
TimeFrom = DateTime.ParseExact(textBox1.Text, "yyyy-MM-dd hh:mm:ss", null);
TimeFrom = DateTime.ParseExact(textBox1.Text, CultureInfo.CurrentCulture.DateTimeFormat.GetAllDateTimePatterns(), new CultureInfo("sv-SE"), DateTimeStyles.None);
TimeFrom = DateTime.ParseExact(textBox1.Text, CultureInfo.CurrentCulture.DateTimeFormat.GetAllDateTimePatterns(), new CultureInfo("sv-SE"),System.Globalization.DateTimeStyles.AssumeUniversal);
TimeFrom = DateTime.ParseExact("2008-10-01 16:44:12.000", "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.CreateSpecificCulture("en-US"));
textBox1.Text = TimeFrom.ToString();
但它们都没有给我我渴望的格式。
的更新:
从我宣布我的DateTime变量到我想将textBox1.Text值从“sv-SE”解析为“en-EN”的时间看起来,当前文化似乎有所改变,这就是为什么它决定改变方式我的时间格式化了。这不是我在我的代码中所做的事情。关于为什么的任何想法?
为什么它决定忽略我的(IFormatProvider) new CultureInfo("sv-SE",true)
,这是我还没想到的东西。
如果您有任何建议,请告诉我。
答案 0 :(得分:4)
textBox1.Text = TimeFrom.ToString("yyyy-MM-dd hh:mm:ss");
或类似的东西:
textBox1.Text = TimeFrom.ToString(new CultureInfo("sv-SE"));
取决于您的确切需求。
答案 1 :(得分:3)
解析意味着使用格式获取字符串并将其转换为强类型的DateTime对象。
要将强类型DateTime对象转换为字符串,请使用格式调用ToString
。
TimeFrom.ToString("yyyy-MM-dd hh:mm:ss");
编辑:也许你只需要在开始做事之前设置Thread.CurrentThread.CurrentCulture = new CultureInfo("sv-SE")
。这是一个ASP.NET应用程序吗?
答案 2 :(得分:1)
你试过吗
TimeFrom.ToString("yyyy-MM-dd hh:mm:ss");
只有在将DateTime
转换为String
时才需要格式化{{1}}。
答案 3 :(得分:0)
你试过InvariantCulture吗?要以特定格式打印字符串,请查看format strings
答案 4 :(得分:0)
当我呈现报告并将其加载到报告查看器中时,CurrentCulture已更改为en-EN。报告语言设置为空白,这使我相信默认语言是en-EN。
这改变了我的时间表现方式。 DateTime变量不记得其格式化文化。因此,将DateTime表示为字符串的任何更改都必须包含字符串格式,如下所示:dateTimeVariable.toString("yyyy-MM-dd hh:mm:ss")
我希望有人会发现这有用。