博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 版本的 计时器类:精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出...
阅读量:6278 次
发布时间:2019-06-22

本文共 6411 字,大约阅读时间需要 21 分钟。

class TimeCount    {        // 临时变量,存放当前类能表示的最大年份值        private static ulong MaxYear = 0;                ///         /// 获取毫秒能表示的最大年份数        ///         /// 
年份数最大值
public static ulong GetMaxYearCount() { if (TimeCount.MaxYear != 0) return TimeCount.MaxYear; else { double ulongMax = Math.Pow(2, 64); double yearToMiliseconds = (double)12 * (double)30 * (double)24 * (double)3600 * (double)1000; TimeCount.MaxYear = (ulong)(ulongMax / yearToMiliseconds); return TimeCount.MaxYear; } } /// /// 把当前系统时间转换成毫秒 /// ///
当前系统时间所对应的毫秒数
public static ulong GetCurrentTimeByMiliSec() { DateTime t = DateTime.Now; ulong millisecond = ((((((ulong)t.Year * 12 + (ulong)t.Month) * 30 + (ulong)t.Day) * 24 + (ulong)t.Hour) * 60 + (ulong)t.Minute) * 60 + (ulong)t.Second) * 1000 + (ulong)(t.Millisecond); return millisecond; } /// /// 不太实用的函数,给定三个输入,得到时间差,以字符串形式返回 /// /// 时间前面的前缀,例如“绘制XX所用时间为:” /// 第一个时间 /// 第二个时间,无所谓先后,总之最后会取绝对值 ///
public static string GetTimeInterval(string str, ulong a, ulong b) { ulong interval = b - a; str += Convert.ToString(Math.Abs(( ((double)interval)/1000))); str += "秒"; return str; } /// /// 得到两个给定时间(毫秒)之间的时间差,最终值会去绝对值 /// /// 早一些的时间(毫秒) /// 晚一些的时间(毫秒) ///
public static double GetTimeInterValBySec(ulong a, ulong b) { return Math.Abs(((double)b - (double)a)/(double)1000); } /// /// 小数点后保留一位小数 /// /// 一个小数 ///
一个字符串
public static string RemainOneFigureAfterDot(double double1) { string tempStr = double1.ToString(); string double1str; if (tempStr == "") { return "0.0"; } int index = tempStr.IndexOf("."); if (index == -1) { double1str = tempStr + ".0"; return double1str; } else { if (tempStr.Length < index + 2) return tempStr + ".0"; else { double1str = tempStr.Substring(0, index + 2); return double1str; } } } /// /// 年月日时分化成秒 /// public enum YMDHmS { yearSc = 365 * 24 * 3600, monSc = 30 * 24 * 3600, daySc = 24 * 3600, houSc = 3600, minSc = 60 } /// /// 把一个String格式的以秒为单位的时间,转化成年月日时分秒为单位的时间字符串,并最后的秒保留一位小数 /// /// 秒数,string格式 ///
public static string SecondsToYYMMDDhhmmss(string seconds) { double secondsDble = Convert.ToDouble(seconds); return TimeCount.SecondsToYYMMDDhhmmss(secondsDble); } /// /// 把一个int格式的以秒为单位的时间,转化成年月日时分秒为单位的时间字符串,并最后的秒保留一位小数 /// /// 秒数,int格式 ///
public static string SecondsToYYMMDDhhmmss(int seconds) { double secondsDble = Convert.ToDouble(seconds); return TimeCount.SecondsToYYMMDDhhmmss(secondsDble); } /// /// 把一个ulong格式的以秒为单位的时间,转化成年月日时分秒为单位的时间字符串,并最后的秒保留一位小数 /// /// 秒数,ulong格式 ///
public static string SecondsToYYMMDDhhmmss(ulong seconds) { double secondsDble = Convert.ToDouble(seconds); return TimeCount.SecondsToYYMMDDhhmmss(secondsDble); } /// /// 把一个double格式的以秒为单位的时间,转化成年月日时分秒为单位的时间字符串,并最后的秒保留一位小数 /// /// 秒数,double格式 ///
public static string SecondsToYYMMDDhhmmss(double secondsDble) { string returnSTR = ""; if (secondsDble == 0) { return "0.0秒"; } int YY = 0, MM = 0, DD = 0, HH = 0, mm = 0; if (secondsDble >= (uint)YMDHmS.yearSc)//年 { while (secondsDble > 0) { secondsDble -= (uint)YMDHmS.yearSc; YY++; } secondsDble += (uint)YMDHmS.yearSc; YY--; } if (secondsDble >= (uint)YMDHmS.monSc)//月 { while (secondsDble > 0) { secondsDble -= (uint)YMDHmS.monSc; MM++; } secondsDble += (uint)YMDHmS.monSc; MM--; } if (secondsDble >= (uint)YMDHmS.daySc)//日 { while (secondsDble > 0) { secondsDble -= (uint)YMDHmS.daySc; DD++; } secondsDble += (uint)YMDHmS.daySc; DD--; } if (secondsDble >= (uint)YMDHmS.houSc)//时 { while (secondsDble > 0) { secondsDble -= (uint)YMDHmS.houSc; HH++; } secondsDble += (uint)YMDHmS.houSc; HH--; } if (secondsDble >= (uint)YMDHmS.minSc)//分 { while (secondsDble > 0) { secondsDble -= (uint)YMDHmS.minSc; mm++; } secondsDble += (uint)YMDHmS.minSc; mm--; } if (YY != 0) returnSTR += YY.ToString() + "年"; if (MM != 0) returnSTR += MM.ToString() + "月"; if (DD != 0) returnSTR += DD.ToString() + "天"; if (HH != 0) returnSTR += HH.ToString() + "小时"; if (mm != 0) returnSTR += mm.ToString() + "分"; if (secondsDble < 10) { returnSTR += "0" + TimeCount.RemainOneFigureAfterDot(secondsDble) + "秒"; } else { returnSTR += TimeCount.RemainOneFigureAfterDot(secondsDble) + "秒"; } return returnSTR; } }

 原文链接:

转载地址:http://nufva.baihongyu.com/

你可能感兴趣的文章
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>
%Error opening tftp://255.255.255.255/cisconet.cfg
查看>>
java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
查看>>
《从零开始学Swift》学习笔记(Day 51)——扩展构造函数
查看>>
python多线程队列安全
查看>>
[汇编语言学习笔记][第四章第一个程序的编写]
查看>>
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>
Vue实例初始化的选项配置对象详解
查看>>
PLM产品技术的发展趋势 来源:e-works 作者:清软英泰 党伟升 罗先海 耿坤瑛
查看>>
vue part3.3 小案例ajax (axios) 及页面异步显示
查看>>
浅谈MVC3自定义分页
查看>>