由于datetime.now.tostring()太多,想统一调用一个方法,结果IIS崩溃。。。
由于datetime.now.tostring()写的太多了,于是就想在一个类里写个方法,其他页面统一实例化调用(避免代码重复嘛,C#不是如是说。。。)。结果本地调试不起,IIS直接崩溃。。。求解代码重复 --------------------编程问答-------------------- 完全不知所云,估计楼主自己也不知道发生了什么 --------------------编程问答-------------------- 是啊 你怎么写的发来瞧瞧 不会崩溃吧 是代码有问题 --------------------编程问答-------------------- 由于我为了练习写Hello World,不小心把FBI的中央电脑搞崩溃了。 --------------------编程问答-------------------- 这么多吐槽
我次次见到这里的留言都无力吐槽的。 --------------------编程问答-------------------- 不懂你说的什么意思,你得先在本地把程序运行调试通过了,再发布到iis。 --------------------编程问答-------------------- 我估计你是把tostring()写成中文“土司吹”了,所以编译错误。 --------------------编程问答-------------------- 不调侃了,说正经滴!
你不觉着你替换后的代码和替换前滴代码一样多么?
一句话而已,还只是代码,不是逻辑。不值得这么搞滴
呵呵,datetime.now.tostring() 节省成XXOO.getNow,意义不大啊 --------------------编程问答--------------------
XXOO.lastTime这样好理解 --------------------编程问答-------------------- --------------------编程问答-------------------- LZ在火车上跺了跺了脚,结果铁道系统整个崩溃。用debug看看那步错误。 --------------------编程问答-------------------- 频繁使用DateTime.Now开销确实比较大,如果只要求精确到秒的话,应该自己写个定时器处理。
/// <summary>toString也给你一个参考
/// 精确到秒的时间
/// </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; }
}
/// <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上 --------------------编程问答--------------------
10W次,上边漏了个W
补充:.NET技术 , C#