删除日期时间格式中的尾随 0(和 .)
本文关键字:日期 时间 格式 删除 | 更新日期: 2023-09-27 18:37:18
我得到了一个小代码示例来解释我需要做什么
链接到多尼特菲德勒
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));
}
}
}
输出
a 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和.的解决方案是什么?

只需将格式字符串更改为大写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