正在做一个站,有论坛功能,为了避免发帖机或者恶意灌水,需要这样的限制。

大气象

protected void btnPost_Click(object sender, EventArgs e)
{
    if (Session["lastTime"] == null)
    {
        Session["lastTime"] = DateTime.Now;
    }
    DateTime dt = Convert.ToDateTime(Session["lastTime"]);
    TimeSpan ts = DateTime.Now - dt;
    Response.Write(ts.Days + ":" + ts.Hours + ":" + ts.Minutes + ":" + ts.Seconds);
    if (ts.Hours > 0 || ts.Minutes > 0 || ts.Seconds > 30)
    {
        Session["lastTime"] = DateTime.Now;
        Response.Write("可以发帖!");
    }
    else
    {
        Response.Write("你的发帖速度过快!时间间隔不要小于30秒!");
    }
}
/// <summary>
/// 把秒转换成分钟
/// </summary>
/// <returns></returns>
public static int SecondToMinute(int Second)
{
    decimal mm = (decimal)((decimal)Second / (decimal)60);
    return Convert.ToInt32(Math.Ceiling(mm));
}
/// <summary>
/// 计算两个时间的时间间隔
/// </summary>
/// <param name="DateTimeOld">较早的日期和时间</param>
/// <param name="DateTimeNew">较后的日期和时间</param>
/// <returns></returns>
public static string DateDiff(DateTime DateTimeOld, DateTime DateTimeNew)
{
    string dateDiff = "";
    TimeSpan ts1 = new TimeSpan(DateTimeOld.Ticks);
    TimeSpan ts2 = new TimeSpan(DateTimeNew.Ticks);
    TimeSpan ts = ts1.Subtract(ts2).Duration();
    int day = ts.Days;
    int hou = ts.Hours;
    int minu = ts.Minutes;
    int sec = ts.Seconds;
    if (day > 0)
    {
        if (day > 30)
        {
            if (day > 364)
            {
                dateDiff += day / 365 + "年";
            }
            else
            {
                dateDiff += day / 30 + "个月";
            }
        }
        else
        {
            dateDiff += day.ToString() + "天";
        }
    }
    else
    {
        if (hou > 0)
        {
            dateDiff += hou.ToString() + "小时";
        }
        else
        {
            if (minu > 0)
            {
                dateDiff += minu.ToString() + "分钟";
            }
            else
            {
                if (sec > 0)
                {
                    dateDiff += sec.ToString() + "秒";
                }
                else
                {
                    dateDiff += "0秒";
                }
            }
        }
    }
    if (DateTimeNew.CompareTo(DateTimeOld) > 0)
    {
        dateDiff += "前";
    }
    else
    {
        dateDiff += "后";
    }
    return dateDiff;
}
/// <summary>
///判断是否于5分钟之前
/// </summary>
/// <param name="DateTimeOld">较早的日期和时间</param>
/// <returns></returns>
public static bool DateDiff_minu(DateTime DateTimeOld)
{
    TimeSpan ts1 = new TimeSpan(DateTimeOld.Ticks);
    TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);
    TimeSpan ts = ts1.Subtract(ts2).Duration();
    int minu = ts.Minutes;
    if (minu > 5)
    {
        return true;
    }
    else
    {
        return false;
    }
}
/// <summary>
/// 与当前时间比较,重载时间比较函数,只有一个参数
/// </summary>
/// <param name="DateTimeOld">较早的日期和时间</param>
/// <returns></returns>
public static string DateDiff(DateTime DateTimeOld)
{
    return DateDiff(DateTimeOld, DateTime.Now);
}
/// <summary>
/// 日期比较,返回精确的几分几秒
/// </summary>
/// <param name="DateTime1">较早的日期和时间</param>
/// <param name="DateTime2">较迟的日期和时间</param>
/// <returns></returns>
public static string DateDiff_full(DateTime DateTime1, DateTime DateTime2)
{
    string dateDiff = null;
    TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
    TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
    TimeSpan ts = ts1.Subtract(ts2).Duration();
    dateDiff = ts.Days.ToString() + "天" + ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "分钟" + ts.Seconds.ToString() + "秒";
    return dateDiff;
}
/// <summary>
/// 时间比较,返回精确的几秒
/// </summary>
/// <param name="DateTime1">较早的日期和时间</param>
/// <param name="DateTime2">较迟的日期和时间</param>
/// <returns></returns>
public static int DateDiff_Sec(DateTime DateTime1, DateTime DateTime2)
{
    TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
    TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
    TimeSpan ts = ts1.Subtract(ts2).Duration();
    int dateDiff = ts.Days * 86400 + ts.Hours * 3600 + ts.Minutes * 60 + ts.Seconds;
    return dateDiff;
}

/// <summary>
/// 日期比较
/// </summary>
/// <param name="today">当前日期</param>
/// <param name="writeDate">输入日期</param>
/// <param name="n">比较天数</param>
/// <returns>大于天数返回true,小于返回false</returns>
public static bool CompareDate(string today, string writeDate, int n)
{
    DateTime Today = Convert.ToDateTime(today);
    DateTime WriteDate = Convert.ToDateTime(writeDate);
    WriteDate = WriteDate.AddDays(n);
    if (Today >= WriteDate)
        return false;
    else
        return true;
}

转载于:https://www.cnblogs.com/greatverve/archive/2010/09/01/aspnet-timespan.html

ASP.NET设置发帖时间间隔不超过30秒相关推荐

  1. php响应超过三十秒会报错么,如何捕捉致命错误:PHP中超过30秒的最大执行时间...

    你唯一的select是增加允许的执行时间(将其设置为0使其无限,但不推荐)或产生一个新的线程,并希望最好的. 这是不可捕捉的原因是它并没有真正抛出. 没有一行代码实际上触发了这个错误,而是PHP说:& ...

  2. SQL Server通过动态视图里查找阻塞超过30秒的会话

    SQL Server通过动态视图里查找阻塞的会话 简介 对于阻塞我们可以通过动态视图dm_exec_requests.dm_tran_locks等关联通过构建递归式树形结构来查找出阻塞超过30秒的会话 ...

  3. 小程序激励视频观看超过30秒,获取奖励

    小程序激励视频观看超过30秒,获取奖励 需求是这样子的,小程序里面插入了video标签,拥有视频功能,用户看视频超过30秒时候,会显示弹框弹出奖励 思路: 需求是这样子的,小程序里面插入了video标 ...

  4. workbench查询大数据量,一到30秒自动中断

    查了网上教程,一开始以为是在my.in里配置max_allowed_package,试完没用: 又重启mysql,net stop mysql,net start mysql,依然没用: 后来发现na ...

  5. 告别刷抖音!30秒一个Python小例子,总有一款适合你

    小编每天上班坐地铁,不是刷抖音就是煲电视剧,不是我不想学习,主要是短视频太好看了,30秒一个,刷刷刷的不停啊.如果Python也有30秒学习的小例子,我也一定会看呢. 于是小编收录整理了一些30秒一个 ...

  6. 告别刷抖音!30秒一个Python小例子,总有一款适合你,赶紧收藏!

    小编每天上班坐地铁,不是刷抖音就是煲电视剧,不是我不想学习,主要是短视频太好看了,30秒一个,刷刷刷的不停啊.如果Python也有30秒学习的小例子,我也一定会看呢. 于是小编收录整理了一些30秒一个 ...

  7. python抖音粉丝_告别刷抖音!30秒一个Python小例子,总有一款适合你

    小编每天上班坐地铁,不是刷抖音就是煲电视剧,不是我不想学习,主要是短视频太好看了,30秒一个,刷刷刷的不停啊.如果Python也有30秒学习的小例子,我也一定会看呢. 于是小编收录整理了一些30秒一个 ...

  8. python刷抖音浏览_告别刷抖音!30秒一个Python小例子,总有一款适合你

    小编每天上班坐地铁,不是刷抖音就是煲电视剧,不是我不想学习,主要是短视频太好看了,30秒一个,刷刷刷的不停啊.如果Python也有30秒学习的小例子,我也一定会看呢. 于是小编收录整理了一些30秒一个 ...

  9. 安装时间大于30秒_get朋友圈超长视频模版, 点亮朋友圈30秒“带货神器”

    花呗什么时候还款,各位的钱包还撑到什么时候,老板说,再不上班,公司就没了!这段时间大家的存粮真的不多啦, get朋友圈超长视频模版, 点亮朋友圈30秒"带货神器"-- 在微信朋友圈 ...

最新文章

  1. Ruby:Hash 排序
  2. 【随手拍解救单身男女(1)】数据分析师书豪
  3. codeforces 739E - Gosha is hunting
  4. Tiny Core Linux 4.5 发布,微型 Linux 操作系统
  5. Linux下 -bash: php: command not found 命令找不到
  6. ajax流式传输,直接流式传输JSON以响应Jackson
  7. uniapp跨域两次请求解决方案
  8. .NET:枚举的默认值
  9. 7-6 华氏度转摄氏度(四舍五入)
  10. 移动电源快充QC3.0方案芯片IP5318快充方案
  11. 对SMART法则的多种解释
  12. 游戏辅助原理与制作02-植物大战僵尸03-冷却时间基址
  13. 什么是OSINT?以及如何使用开源网络情报工具?
  14. 应聘PHP有面试题吗,php应聘面试题
  15. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化
  16. 土木工程结构力学————钢架的位移法
  17. LCD1602液晶显示屏使用方法
  18. 图灵奖得主Geoffrey Hinton:我的五十年深度学习生涯与研究心法
  19. CCS Invalid project description
  20. 自动控制原理复习——线性系统的根轨迹法

热门文章

  1. 无法远程连接Oracle
  2. redis缓存清除策略 、获取dumb.rdb或者***.aof文件的位置
  3. Ranger-AdminServer安装Version2.0.0
  4. Linux 多网卡bond
  5. JAVA设计模式 - 建造者模式
  6. python完全支持面向对象编程思想_面向对象的编程思想和Python的继承和多态,特殊方法,引用计数...
  7. android10适配机型华为,EMUI10适配机型进度公布 这10款机型将率先尝鲜
  8. python找出有向图的所有环,Python:有向图中的所有简单路径
  9. java完成键盘动作_java实现鼠标和键盘动作后台监听
  10. 从AIDL一窥Android Binder机制