如何将毫秒转换为 hh mm ss 格式并将其保存在 Db 中

Posted

技术标签:

【中文标题】如何将毫秒转换为 hh mm ss 格式并将其保存在 Db 中【英文标题】:How to convert milliseconds to hh mm ss format and save it in Db 【发布时间】:2021-03-14 17:37:52 【问题描述】:

我们如何将毫秒显示为 hh:mm:ss 格式。

我所做的所有尝试的结果只是显示 00:00:00:016 或 00:00:00:01320000

控制器动作方法


using(Db db = new Db())

    Chat newDTO = db.Chats.Where(x => x.ChatId == id).FirstOrDefault();

    DateTime startTime = Convert.ToDateTime(newDTO.FeedbackDateTime);
    DateTime endtime = Convert.ToDateTime(newDTO.FeedbackSharedDateTime);
    TimeSpan duration = endtime - startTime;
    //hh:mm:ss
    string stringAHT = duration.ToString(@"hh\:mm\:ss\:fff");

    newDTO.AuditorAHT = stringAHT;                

    db.SaveChanges();

查看

<div class="form-row">

    <div class="form-group col-md-4">
        <label class="control-label col-md-6 font-weight-bold">AHT</label>
        <div class="col-md-10 bg-gray-200 form-control">
            @html.DisplayFor(model => model.AuditorAHT)
        </div>
    </div>

</div>

提前谢谢你

【问题讨论】:

newDTO.FeedbackDateTime和newDTO.FeedbackSharedDateTime的数据类型和值是什么? 公开日期时间?反馈日期时间 得到;放; , public DateTime?FeedbackSharedDateTime get;放; 。那么公开日期时间?反馈日期时间 得到;放; MINUS public DateTime?FeedbackSharedDateTime get;放; 。 = 公共字符串 AuditorAHT 获取;放; 【参考方案1】:

是不是因为你的时长是00:00:00:016?如果是,默认格式是毫秒。如果不想要毫秒,可以使用:

string stringAHT = duration.ToString(@"hh\:mm\:ss");

如果你想改变其他格式,你可以像这样使用string.Format:

string stringAHT1 = string.Format("0:D2h:1:D2m:2:D2s",
                        24*duration.Days+duration.Hours,
                        duration.Minutes,
                        duration.Seconds); 

这将得到类似xxh:xxm:xxs的格式

这是一个演示:

DateTime d1 = new DateTime(2020,12,1,11,31,20,11);
            DateTime d2 = new DateTime(2020, 12, 2,10,31,20,22);
            TimeSpan duration =d2 - d1;
            string stringAHT = duration.ToString(@"hh\:mm\:ss");
            string stringAHT1 = string.Format("0:D2:1:D2:2:D2",
                        24*duration.Days+duration.Hours,
                        duration.Minutes,
                        duration.Seconds
                        );

结果:

字符串AHT:23:00:00

字符串AHT1 :23:00:00

更新:

string stringAHT1 = string.Format("0:D2:1:D2:2:D2:3:D2",
                        24 * duration.Days + duration.Hours,
                        duration.Minutes,
                        duration.Seconds,
                        duration.Milliseconds
                        );

结果:

00:00:00:14

【讨论】:

没有成功 DateTime d1 = Convert.ToDateTime(newDTO.FeedbackDateTime); DateTime d2 = Convert.ToDateTime(newDTO.FeedbackSharedDateTime); TimeSpan 持续时间 = d2 - d1; string stringAHT = duration.ToString(@"hh\:mm\:ss"); string stringAHT1 = string.Format("0:D2:1:D2:2:D2", 24 * duration.Days + duration.Hours, duration.Minutes, duration.Seconds ); newDTO.AuditorAHT = stringAHT1; 可以分享d1,d2和duration的数据吗 d1 = 2020-12-03 15:43:59.653:d2 = 2020-12-03 15:43:59.667:持续时间 = d2-d1。审计员在特定审计上花费的时间将是 AHT 你的 d2 和持续时间是多少? 模型类公共日期时间? d1 得到;放; 公共日期时间? d2 得到;放; 公共字符串 AuditorAHT 获取;放;

以上是关于如何将毫秒转换为 hh mm ss 格式并将其保存在 Db 中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle 中将毫秒转换为 hh mm ss 格式

如何将 HH:mm:ss.SSS 转换为毫秒?

通过 Javascript 将 DOMTimeStamp 转换为本地化的 HH:MM:SS MM-DD-YY

如何将毫秒更改为 yyyy-MM-dd HH:mm:ss 格式的日期对象 [重复]

将时间戳(字符串)转换为毫秒(长)

C# 以 hh:mm:ss 格式显示毫秒