将时间字符串格式化成DateTime的有趣事情

简介:   最近老大要我将一个dateCalendar控件换成jQuery的datePicker控件,换了之后需要修改cs代码,我在格式化时间的时候遇到了很有趣的事情,就是,我无论用什么样的方式格式化字符串,它都会添加一个“星期几”进去,例如它会将“2012-08-11 8: 0:00"转换成“2012-08-11 星期六 8: 0:00”。

  最近老大要我将一个dateCalendar控件换成jQuery的datePicker控件,换了之后需要修改cs代码,我在格式化时间的时候遇到了很有趣的事情,就是,我无论用什么样的方式格式化字符串,它都会添加一个“星期几”进去,例如它会将“2012-08-11 8: 0:00"转换成“2012-08-11 星期六 8: 0:00”。最后这个问题解决了,照成问题的原因有点让我苦笑不得。现在不说照成问题的原因,先说说我在找到原因之前学到的几种格式化时间字符串的方法:

  第一种,当然是Convert这个无敌的方法了,这个里面有个方法ToDateTime(string dateTime)。

string dateTime = "2012-08-11 10:11";
Console.WriteLine(Convert.ToDateTime(dateTime));

  运行结果:

  第二种就是TryParseExact方法,下面是方法介绍(http://msdn.microsoft.com/zh-cn/library/ms131044.aspx):

public static bool TryParseExact(
      string s,//要格式化的字符串
      string format,//格式化的类型
      IFormatProvider provider,//提供"s"的区域性特定格式信息
      DateTimeStyles style,//时间样式
      out DateTime result//输出值
)

  例子:

DateTime output1;
DateTime.TryParseExact("2012-08-11", "yyyy/MM/dd", null, DateTimeStyles.None, out output1);
Console.WriteLine(output1.ToString());
Console.WriteLine("");
Console.WriteLine("");

string dataTime = "2012-08-11 10:01:00";
DateTimeFormatInfo dtFormat = new CultureInfo("en", true).DateTimeFormat;
string[] expectFormats = { "yyyy-MM-dd HH:mm:ss" };
DateTime output;
DateTime.TryParseExact(dataTime, 
                expectFormats,
                null, 
                DateTimeStyles.AdjustToUniversal, 
                out output);
Console.WriteLine(output.ToString());

结果(第一个显示不是预期的):

  第三种方式是ParseExact方法,下面是方法介绍(http://msdn.microsoft.com/zh-cn/library/w2sa9yss(v=VS.80).aspx):

public static DateTime ParseExact (
    string s,//包含要转换的日期和时间的字符串。
    string format,//s 的预期格式。
    IFormatProvider provider//用于提供有关 s 的区域性特定格式信息。
)

  例子:

            string temp1 = "2012-08-11";
            DateTime dateTemp1 = DateTime.ParseExact(temp1, "yyyy-MM-dd", CultureInfo.CurrentCulture, DateTimeStyles.None);
            Console.WriteLine(dateTemp1.ToString());
            Console.WriteLine("");
            Console.WriteLine("");

            string temp2 = "2012-08-11";
            DateTimeFormatInfo dtfi = new CultureInfo("zh-CN", false).DateTimeFormat; 
            DateTime dateTemp3 =  DateTime.ParseExact(temp2, "yyyy-MM-dd", dtfi, DateTimeStyles.None) ;
            Console.WriteLine(dateTemp3.ToString());
            Console.WriteLine("");
            Console.WriteLine("");

            string[] DateTimeList = {
            "yyyy-MM-dd HH:mm:ss",
            "yyyy-M-d HH:mm:ss",
            "yyyy-M-d H:mm:ss",
            "yyyy-M-d H:m:ss",
            "yyyy-M-d HH:mm:ss",
            "yyyy-M-d HH:m:ss",
            };
            DateTimeFormatInfo dtFormat1 = new CultureInfo("en-US", true).DateTimeFormat;
            DateTime dt = DateTime.ParseExact("2012-08-11 8: 0:00",
                DateTimeList,
                dtFormat1,
                DateTimeStyles.AllowWhiteSpaces
            );
            Console.WriteLine(dt.ToString());

  结果如下:

 

  以上的结果是没有星期几的,我现在上图


这是我在修改之前的输出结果,不论使用什么方法都会输出星期六,及时我想语言特定为“en”,"en-US"等等,

后来我发现是因为我自己将WIN7系统的时间格式修改了,手动添加了表示星期几的"dddd",

我在将"dddd"去掉后,显示就正常了,如下:

 

【注】:目前我没找到一种将字符串转化成DateTime的时候与系统时间格式完全无关的方法,希望知道的可以多多指教,谢谢了!

推荐文章:http://www.cnblogs.com/jxfc2002/articles/885413.html

目录
相关文章
|
6月前
|
关系型数据库 MySQL
mysql查询结果时间戳转成日期格式——date、DATE_FORMAT和FROM_UNIXTIME的使用
mysql查询结果时间戳转成日期格式——date、DATE_FORMAT和FROM_UNIXTIME的使用
96 0
|
7月前
|
C#
C#DateTime时间转换方法大全
C#DateTime时间转换方法大全
366 0
go语言时间类型、字符串转换为时间、时间转换为字符串
go语言时间类型、字符串转换为时间、时间转换为字符串
C# 对于“日期时间(DateTime)“的处理 时间差计算
C# 对于“日期时间(DateTime)“的处理 时间差计算
dateTime怎么根据日期(年月日)查找数据
dateTime怎么根据日期(年月日)查找数据
158 0
dateTime怎么根据日期(年月日)查找数据
日期字符串转换成时间戳
日期字符串转换成时间戳
186 0
|
C#
C# DateTime和DateTime?格式化时间
DateTime:   DateTime?:
848 0
10.2-10.3 datetime与时间格式的相互转换
Subclass relationships: 这类直接的对应关系 # object # timedate # tzinfo # time       #基本不使用 # date # datetime    #一般使用 datetime 取时间 import time for i in range(1,10):     print(i)     time.
620 0
|
JavaScript 前端开发 Java
js前端转换Date或秒数的时间格式
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/78981647 简介   1.
1295 0
下一篇
DataWorks