WPF中TimeSpan的坑

来源:https://www.cnblogs.com/DiKingVue/archive/2019/05/11/10844162.html
-Advertisement-
Play Games

記一次在WPF中,在將格式為“DD.HH:mm:ss”字元串轉換成TimeSpan時遇到的坑 如果字元串為:DD.HH:mm:ss,轉換結果正確。例如: 以上輸出結果:轉換前:2.12:25:45.555轉換後:True 2.12:25:45.555 分別更改時間戳不同部分,使其超過對應的最大值。 ...


記一次在WPF中,在將格式為“DD.HH:mm:ss”字元串轉換成TimeSpan時遇到的坑

如果字元串為:DD.HH:mm:ss,轉換結果正確。例如:

1             var currentValue = "2.12:25:45.555";
2             TimeSpan result;
3             var success = TimeSpan.TryParse(currentValue, out result);
4             Console.Write("轉換前:"+currentValue);
5             Console.WriteLine("轉換後:"+success + " "+ result.ToString());

以上輸出結果:轉換前:2.12:25:45.555轉換後:True 2.12:25:45.555

分別更改時間戳不同部分,使其超過對應的最大值

  1. 更改天大於30:轉換前:30.12:25:45.555 轉換後:True 30.12:25:45.5550000
  2. 更改小時大於12:轉換前:2.23:25:45.555 轉換後:True 02.23:25:45.5550000
  3. 更改小時大於24:轉換前:2.25:25:45.555 轉換後:False 00:00:00 失敗
  4. 更改分鐘大於60:轉換前:2.12:75:45.555 轉換後:False 00.00:00:00 失敗
  5. 更改秒大於60:轉換前:2.12:25:75.555 轉換後:False 00.00:00:00 失敗
  6. 更改毫秒大於1000:轉換前:2.12:25:45.5555 轉換後:True 02.12:25:45.5550000 成功

問題:

對於毫秒數,我們知道1s=1000ms。當字元串中毫秒數超過1000時,會是什麼情況。

如上測試可以看出,在ToString()時,毫秒位數為7位。超過其範圍4位。最後四位是什麼含義呢?答案:最後四位為納秒有效數字位。(1ms=10000納秒)

圖1毫秒部分大於3位小於7位

如圖1所示。轉換前:2.12:25:45.125555  轉換後:True 2.12:25:45.1255550 ,毫秒125

 

圖2毫秒部分為7位

如圖2所示。轉換前:2.12:25:45.1255555  轉換後:True 2.12:25:45.1255555  ,毫秒125

圖3毫秒部分大於7位

如圖3所示。轉換前:2.12:25:45.125555555  轉換後:False 轉換失敗

總結:

  • 字元串轉TimeSpan時對各部分值的設定有嚴格的限制,超過限制值,其並不會將相應部分向高位進位。(如小時部分為26,它不會轉換成一天2小時。
  • 字元串毫秒部分在轉換時,它只截取前三位作為Milliseconds(毫秒)的有效部分,進行轉換,截取接下來的四位為TimeSpane中的納秒的值。即毫秒部分最多只能有7位,超過將轉換失敗(超限)。
  • TimeSpan可以用@"dd\.hh\:mm\:ss\.fff"等進行字元串格式化。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 美食排行榜網站上線後,為了快速提升流量,需要製造一個引流機會。 我的想法是開闢一個專欄,按照菜品和地區,讓用戶自發投票給自己喜歡的餐館,最終形成一個年度/月度 等的美食排行榜 比如 成都川菜美食排行榜 這個頁面,目前是按照數據入庫的先後時間排序,並不是用戶真實的排行,怎麼才能做到真實排行呢? 這就需 ...
  • 基於flask的網頁聊天室(三) 前言 繼續上一次的內容,今天完成了csrf防禦的添加,用戶頭像的存儲以及用戶的登錄狀態 具體內容 首先是添加csrf的防禦,為整個app添加防禦: from flask_wtf.csrf import CSRFProtect CSRFProtect(app) 這個添 ...
  • 1.Equals 很多人對equals方法的用法有些模糊,這裡來為大家梳理下: 字元串中的equals方法,該方法用來判斷兩個字元串的內容是否相同。 例1: 從例1中我們可以看出,兩個字元串之間的比較,無論用”==”號還是equals來進行,只要內容相同,結果就為True,內容不同,結果就為Fals ...
  • [TOC] 手寫數字識別流程 MNIST手寫數字集7000 10張圖片 60k張圖片訓練,10k張圖片測試 每張圖片是28\ 28,如果是彩色圖片是28\ 28\ 3 0 255表示圖片的灰度值,0表示純白,255表示純黑 打平28 28的矩陣,得到28\ 28=784的向量 對於b張圖片得到[b, ...
  • 前置知識: 棧 隊列 單調棧 思考這樣一個問題:給定一個數列,詢問每一個數左邊的第一個比它小的數。 暴力的做法是:記錄下所有讀進來的數,然後,每次向前查找,預計時間複雜度O(n2),而且容易被卡。 仔細思考一下,可以發現,這個做法之所以效率低下,是因為每一次都重覆查找了許多肯定不是最優解的元素。很明 ...
  • 基於ASP.NET MVC 實現layui富文本編輯器圖片展示 ...
  • Modbus Rtu的實現與Modbus Tcp的實現類似 C#ModBus Tcp的學習及Master的實現 我們還是需要借用一個開源庫NModbus4,在vs中.打開NuGet管理器.安裝NModbus4 具體實現,具體實現與之前的Modbus Tcp的實現類似 ,只是在實例化master時將T ...
  • 一、開發環境及工具 Windows 7 系統,開發軟體為Microsoft Visual Studio Ultimate 2012 二、實現的功能 屏幕截屏,保存到圖片或者保存到剪切板。截屏範圍可以隨意移動或者改變大小,自由度很高。先預覽一下效果: 三、實現原理 共2個窗體,1個是主窗體,主要功能進 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...