当前位置: 代码迷 >> C# >> C# 字串[日期+时间] 折回 DateTime 是否有更好的写法呢
  详细解决方案

C# 字串[日期+时间] 折回 DateTime 是否有更好的写法呢

热度:821   发布时间:2016-05-05 04:21:14.0
C# 字串[日期+时间] 转回 DateTime 是否有更好的写法呢?


            DateTime tmpDate = StrToDateTime("2015/4/1");  // 畫面上的 TextBox
            String tmpTime = "15:33:05"; // 畫面上的 TextBox
// ↑
// 以上取得值固定不能變得情況下
// 要將使用者輸入的整卻組合回 DateTime ↓

            tmpStr = tmpDate.ToString("yyyy/MM/dd") + "-" + tmpTime;  // 因為 ParseExact 微軟設計的很智障
                                                                      // 明明 DateTime.TryParse 會很聰明的判讀... 4/1 自動補0...
                                                                      // 但是 DateTime.ParseExact 很蠢的不會...只好再強制轉回字串....

            String format = "yyyy/MM/dd-HH:mm:ss";
            DateTime tmpDateTime = DateTime.ParseExact(tmpStr, format, System.Globalization.CultureInfo.InvariantCulture);
            return tmpDateTime;


請問有沒有更好的寫法.. 種覺得中間那段有點蠢
------解决思路----------------------
你可以这样


public class ExtDateTimer
{
     public DateTime ToDateTime(DateTime this obj,string format )
     {
            DateTime tmpDateTime = DateTime.ParseExact(tmpStr, format, System.Globalization.CultureInfo.InvariantCulture);
            return tmpDateTime;
     }
}

然后你调用只要这样了DateTime xxx= tmpStr.ToDateTime("yyyy/MM/dd-HH:mm:ss");
上面的方法自己可以再重载进行改造,总有一个适合你的
------解决思路----------------------
直接转化成Minutes数字
比如07:30就是7*60+30=450,这个450就是你的下拉列表的value
这样取时间只需要DateTime.Now.Date.AddMinutes(450)
------解决思路----------------------
           DateTime tmpDate = StrToDateTime("2015/4/1");  
            String tmpTime = "15:33:05"; // 畫面上的 TextBox
            return tmpDate.AddTicks(TimeSpan.Parse(tmpTime).Ticks);
//这样感觉好点?
  相关解决方案