当前位置:编程学习 > C#/ASP.NET >>

由于datetime.now.tostring()太多,想统一调用一个方法,结果IIS崩溃。。。

由于datetime.now.tostring()写的太多了,于是就想在一个类里写个方法,其他页面统一实例化调用(避免代码重复嘛,C#不是如是说。。。)。结果本地调试不起,IIS直接崩溃。。。求解
代码重复 --------------------编程问答-------------------- 完全不知所云,估计楼主自己也不知道发生了什么 --------------------编程问答-------------------- 是啊 你怎么写的发来瞧瞧 不会崩溃吧 是代码有问题 --------------------编程问答-------------------- 由于我为了练习写Hello World,不小心把FBI的中央电脑搞崩溃了。 --------------------编程问答-------------------- 这么多吐槽
我次次见到这里的留言都无力吐槽的。 --------------------编程问答-------------------- 不懂你说的什么意思,你得先在本地把程序运行调试通过了,再发布到iis。 --------------------编程问答-------------------- 我估计你是把tostring()写成中文“土司吹”了,所以编译错误。 --------------------编程问答-------------------- 不调侃了,说正经滴!

你不觉着你替换后的代码和替换前滴代码一样多么?

一句话而已,还只是代码,不是逻辑。不值得这么搞滴

呵呵,datetime.now.tostring() 节省成XXOO.getNow,意义不大啊 --------------------编程问答--------------------
引用 7 楼 wanghui0380 的回复:
不调侃了,说正经滴!

你不觉着你替换后的代码和替换前滴代码一样多么?

一句话而已,还只是代码,不是逻辑。不值得这么搞滴

呵呵,datetime.now.tostring() 节省成XXOO.getNow,意义不大啊

XXOO.lastTime这样好理解 --------------------编程问答-------------------- --------------------编程问答-------------------- LZ在火车上跺了跺了脚,结果铁道系统整个崩溃。用debug看看那步错误。 --------------------编程问答-------------------- 频繁使用DateTime.Now开销确实比较大,如果只要求精确到秒的话,应该自己写个定时器处理。
        /// <summary>
        /// 精确到秒的时间
        /// </summary>
        private static class nowTime
        {
            /// <summary>
            /// 精确到秒的时间
            /// </summary>
            public static DateTime Now;
            /// <summary>
            /// 刷新时间的定时器
            /// </summary>
            private static Timer timer = new Timer(1000);
            /// <summary>
            /// 刷新时间
            /// </summary>
            private static void refreshTime(object sender, ElapsedEventArgs e)
            {
                Now = DateTime.Now;
                timer.Interval = 1000 - Now.Millisecond;
            }
            static nowTime()
            {
                Now = DateTime.Now;
                timer.Elapsed += refreshTime;
                timer.Start();
            }
        }
        /// <summary>
        /// 精确到秒的时间
        /// </summary>
        public static DateTime NowTime
        {
            get { return nowTime.Now; }
        }
toString也给你一个参考
        /// <summary>
        /// 每毫秒计时周期数
        /// </summary>
        public const long MillisecondTicks = 10000;
        /// <summary>
        /// 一天的计时周期数
        /// </summary>
        public const long DayTiks = 24L * 60L * 60L * 1000L * MillisecondTicks;
        /// <summary>
        /// 16位除以10转乘法的乘数
        /// </summary>
        public const uint Div10_16Mul = ((1 << 19) + 9) / 10;
        /// <summary>
        /// 16位除以10转乘法的位移
        /// </summary>
        public const int Div10_16Shift = 19;
        /// <summary>
        /// 32位除以60转乘法的乘数
        /// </summary>
        public const ulong Div60_32Mul = ((1L << Div60_32Shift) + 59) / 60;
        /// <summary>
        /// 32位除以60转乘法的位移
        /// </summary>
        public const int Div60_32Shift = 21 + 32;
        /// <summary>
        /// 16位除以60转乘法的乘数
        /// </summary>
        public const uint Div60_16Mul = ((1U << Div60_16Shift) + 59) / 60;
        /// <summary>
        /// 16位除以60转乘法的位移
        /// </summary>
        public const int Div60_16Shift = 21;
        /// <summary>
        /// 时间转换成字符串(精确到秒)
        /// </summary>
        /// <param name="time">时间</param>
        /// <returns>时间字符串</returns>
        public unsafe static string toString(this DateTime time)
        {
            char* chars = stackalloc char[20];
            toString(time, time.Ticks % DayTiks, chars);
            return new string(chars, 0, 19);
        }
        /// <summary>
        /// 时间转换成字符串(精确到秒)
        /// </summary>
        /// <param name="time">时间</param>
        /// <param name="dayTiks">当天的计时周期数</param>
        /// <param name="chars">时间字符串</param>
        private unsafe static void toString(DateTime time, long dayTiks, char* chars)
        {
            int data0 = time.Year, data1 = (data0 * (int)number.Div10_16Mul) >> number.Div10_16Shift;
            data0 -= data1 * 10;
            int data2 = (data1 * (int)number.Div10_16Mul) >> number.Div10_16Shift;
            data1 -= data2 * 10;
            int data3 = (data2 * (int)number.Div10_16Mul) >> number.Div10_16Shift;
            data2 -= data3 * 10;
            data0 += '0';
            data1 += '0';
            data0 <<= 16;
            *(int*)(chars + 2) = (data1 += data0);
            data2 += '0';
            data3 += '0';
            data2 <<= 16;
            *(int*)chars = (data3 += data2);

            data0 = time.Month;
            data1 = (data0 + 6) >> 4;
            data0 -= data1 * 10;
            data1 += '0';
            data0 += '0';
            data1 <<= 16;
            *(int*)(chars + 6) = (data0 += ('/' << 16));
            *(int*)(chars + 4) = (data1 += '/');

            data0 = time.Day;
            data1 = (data0 * (int)number.Div10_16Mul) >> number.Div10_16Shift;
            data0 -= data1 * 10;
            data1 += '0';
            data0 += '0';
            data0 <<= 16;
            *(int*)(chars + 8) = (data1 += data0);

            data3 = (int)(dayTiks / (1000 * 10000));
            data2 = (int)(((ulong)data3 * Div60_32Mul) >> Div60_32Shift);
            data3 -= data2 * 60;
            data0 = (data2 * (int)Div60_16Mul) >> Div60_16Shift;
            data2 -= data0 * 60;

            data1 = (data0 * (int)number.Div10_16Mul) >> number.Div10_16Shift;
            data0 -= data1 * 10;
            data1 += '0';
            data0 += '0';
            data1 <<= 16;
            *(int*)(chars + 12) = (data0 += (':' << 16));
            *(int*)(chars + 10) = (data1 += ' ');

            data1 = (data2 * (int)number.Div10_16Mul) >> number.Div10_16Shift;
            data2 -= data1 * 10;
            data1 += '0';
            data2 += '0';
            data2 <<= 16;
            *(int*)(chars + 14) = (data1 += data2);

            data1 = (data3 * (int)number.Div10_16Mul) >> number.Div10_16Shift;
            data3 -= data1 * 10;
            data1 += '0';
            data3 += '0';
            data1 <<= 16;
            *(int*)(chars + 18) = data3;
            *(int*)(chars + 16) = (data1 += ':');
        }

--------------------编程问答-------------------- 楼主自己随便写个控制台程序,看看循环输出DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")会不会有问题。我怎么循环执行1W次都是1秒不到,10次也就是4、5秒左右,所以觉得你的问题不是出在多次读取DateTime.Now上 --------------------编程问答--------------------
引用 12 楼 gclol 的回复:
楼主自己随便写个控制台程序,看看循环输出DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")会不会有问题。我怎么循环执行1W次都是1秒不到,10次也就是4、5秒左右,所以觉得你的问题不是出在多次读取DateTime.Now上

10W次,上边漏了个W
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,