2016-03-03 31 views
0

我得到了很少的代碼示例解釋什麼是我需要做的消除拖尾0(和)

link to donetfiddler

using System; 

namespace ConsoleApplication1 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      const string format = "yyyy-MM-ddTHH:mm:ss.fff"; 
      var trimTime = new char[] { '0', '.' }; 

      var a = new DateTime(2016, 3, 3, 12, 11, 10, 123); 
      var b = new DateTime(2016, 3, 3, 12, 11, 10, 120); 
      var c = new DateTime(2016, 3, 3, 12, 11, 10, 100); 
      var d = new DateTime(2016, 3, 3, 12, 11, 10, 000); 

      Console.WriteLine("a {0} expected 2016-03-03T12:11:10.123", a.ToString(format).TrimEnd(trimTime)); 
      Console.WriteLine("b {0} expected 2016-03-03T12:11:10.12", b.ToString(format).TrimEnd(trimTime)); 
      Console.WriteLine("c {0} expected 2016-03-03T12:11:10.1", c.ToString(format).TrimEnd(trimTime)); 
      Console.WriteLine("d {0} expected 2016-03-03T12:11:10", d.ToString(format).TrimEnd(trimTime)); 

     } 
    } 
} 

輸出

一個2016-03 -03T12:11:10.123預計2016-03-03T12:11:10.123
b 2016-03-03T12:11:10.12預計2016-03-03T12:11:10.12
c 2016-03-03T12 :11:10.1預計2016-03-03T12:11:10.1
d 2016-03-03T12:11:1預計2016-03-03T12:11:10

你可以看到,我的方法去除過最後一種情況很多。

什麼是解決方案刪除尾部0.而不觸及秒部分?

+0

一個正則表達式將方便或者你可以看看毫秒財產和有條件改變格式 –

回答

3

您的格式字符串只要改變資本F S:

string format = "yyyy-MM-ddTHH:mm:ss.FFF"; 

MSDN

的 「FFF」 自定義格式說明

的 「FFF」 自定義格式說明代表秒級分數的三位最重要的數字;也就是說,它表示日期和時間值中的毫秒數。但是,尾隨零或三個零位不顯示

輸出(除去每行的TrimEnd

a 2016-03-03T12:11:10.123 expected 2016-03-03T12:11:10.123 
b 2016-03-03T12:11:10.12 expected 2016-03-03T12:11:10.12 
c 2016-03-03T12:11:10.1 expected 2016-03-03T12:11:10.1 
d 2016-03-03T12:11:10  expected 2016-03-03T12:11:10 
+0

肯定是最好的方式來達到什麼OP想要 – lesscode

+0

正是我想要的,要等5分鐘才能接受這個答案 – Fredou