由于datetime.now.tostring()太多,想统一调用一个方法,结果IIS崩溃。。。 由于datetime.now.tostring()写的太多了,于是就想在一个类里写个方法,其他页面统一实例化调用(避免代码重复嘛,C#不是如是说)。结果本地调试不起,IIS直接崩溃求解代码重复 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 由于我为了练习写Hello World,不小心把FBI的中央电脑搞崩溃了。 不懂你说的什么意思,你得先在本地把程序运行调试通过了,再发布到iis。 我估计你是把tostring()写成中文“土司吹”了,所以编译错误。 不调侃了,说正经滴!你不觉着你替换后的代码和替换前滴代码一样多么?一句话而已,还只是代码,不是逻辑。不值得这么搞滴呵呵,datetime.now.tostring() 节省成XXOO.getNow,意义不大啊 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上 帮忙!!关于List<T>.Find方法!!!!! 多个错误 C#下提取汉字首字的拼音首字母,但是不兼容英文与数字;高手帮忙,马上结贴了 一段用C#编写的发送邮件代码 求助关于一个简单的小程序 GridView的输出问题 在線等待:Windows下在Form中如果分組顯示DataTable中的數據呀? [**高分求教简单问题**]有关Hashtable赋数据库字段值,急~~~up有分 在向RichTextBox中粘贴文本内容时,如何把该文本的有字体,颜色等信息去除,只留下该文本的字符串? 高分求教! 怎么动态绑定报表文件(rdlc)里的表 wpf上的图片问题
/// 精确到秒的时间
/// </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 += ':');
}