精华内容
下载资源
问答
  • 判断两个时间是不是同一天

    千次阅读 2015-07-12 10:35:38
    在项目中很多时候需要判断两个时间是否是同一天,例如用户每天都能领某种福利一次且只能领取一次,这时候当用户领取福利的时就需要判断用户上次领取的时间与当前时间是不是同一天,不是同一天的话可以领取,否则不能...

            在项目中很多时候需要判断两个时间是否是同一天,例如用户每天都能领某种福利一次且只能领取一次,这时候当用户领取福利的时就需要判断用户上次领取的时间与当前时间是不是同一天,不是同一天的话可以领取,否则不能领取。

            一般来讲我会用time(NULL)来获取用户当前领取时间,它返回的是一个整数,代表从CUT(Coordinated Universal Time 格林威治时间)时间1970年1月1日00:00:00到当前时刻的秒数,正因为它是一个整数所以这样便于存储和比较。假如两个时间分别是oldtime和newtime,他们都是用time(NULL)得到的整数时间,我们想判断他们是否是同一天只需要分别求得他们的天数,然后判断是不是相等即可,即这样:

    #define SECONDSOFONEDAY (24*60*60)
    bool IsANewDay(time_t tOldTime,  time_t tNewTime)
    {
    	int iDayOld = static_cast<int>(tOldTime/SECONDSOFONEDAY);
    	int iDayNew = static_cast<int>(tNewTime/SECONDSOFONEDAY);
    	if(iDayNew > iDayOld)
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }
            理论上来讲这样判断就可以了,但是仔细分析会发现这样的判断是以格林威治时间为标准的,也就是说计算的是从格林威治时间1970年1月1日00:00:00以来的第几天,但是我们实际需要计算的是对于我们当前时区来讲的第几天,所以直接用上述算法是有问题的。例如我们当前时区的时间是零点,正好是新的一天,但格林威治时间却还没到零点,这就差了一天,所以要修改算法,以当前时区来计算:

    #define SECONDSOFONEDAY (24*60*60)
    bool IsANewDay(time_t tOldTime,  time_t tNewTime)
    {
    	struct timezone tvTimeZone;
    	gettimeofday(NULL, &tvTimeZone);
    	int iTimeZoneSeconds = (-tvTimeZone.tz_minuteswest*60);
    	int iDayOld = static_cast<int>((tOldTime+iTimeZoneSeconds)/SECONDSOFONEDAY);
    	int iDayNew = static_cast<int>((tNewTime+iTimeZoneSeconds)/SECONDSOFONEDAY);
    	if(iDayNew > iDayOld)
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }

            tvTimeZone.tz_minuteswest返回的是当前时区时间与格林威治时间时间差了多少分钟,所以用之前得到的秒数减去与格林威治时间相差的秒数就得到了当前时区对应的秒数,这样再除以一天的秒数就得到了正确的天数。其实有不少情况我们不想以零点来判断是否是新的一天,好比我们把凌晨5点当做分割线,凌晨5点之前是昨天,之后是新的一天,这时候再判断两个时间是不是新的一天又不一样了。其实改动也很小,只需要在原算法中加个偏移量就好了:

    #define SECONDSOFONEDAY (24*60*60)
    bool IsANewDay(time_t tOldTime,  time_t tNewTime, int iOffSetTime)
    {
    	struct timezone tvTimeZone;
    	gettimeofday(NULL, &tvTimeZone);
    	int iTimeZoneSeconds = (-tvTimeZone.tz_minuteswest*60);
    	int iDayOld = static_cast<int>((tOldTime+iTimeZoneSeconds-iOffSetTime)/SECONDSOFONEDAY);
    	int iDayNew = static_cast<int>((tNewTime+iTimeZoneSeconds-iOffSetTime)/SECONDSOFONEDAY);
    	if(iDayNew > iDayOld)
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }

            例如,IsANewDay(oldtime, newtime, 5*60*60)即返回相对于凌晨五点来讲oldtime和newtime是不是新的一天,我们得到的时间本来是相对于格林威治时间1970年1月1日00:00:00的秒数(相对于零点),如果想以凌晨5点为标准的话,我们只需要计算相对于格林威治时间1970年1月1日05:00:00的秒数即可,所以把时间减去offsettime(5*60*60)就好了。



    展开全文
  • mysql获取当前时间,前一天,后一天

    千次阅读 2018-05-23 14:44:53
    获取时间的 后 8   function fun_submit ( arg ){ var date1 = new Date (); var xdate = date1. getFullYear () + "-" + (date1. getMonth () + 1 ) + "-" + date1. getDate (); ...

    原文  ---------> https://blog.csdn.net/csdn_ds/article/details/71728164

     

     

    负责的项目中,使用的是mysql数据库,页面上要显示当天所注册人数的数量,获取当前的年月日,我使用的是 CURDATE(),

    错误的sql语句

      eg:SELECT COUNT(*) FROM USER WHERE registerDate >= CURDATE() AND registerDate < CURDATE()+1;

      虽然 获取到的数量在测试环境中是正确的,但在发布到线上的时候,发现有的时候数据是查询不到,数量为0,因此,就上网查询是不是CURDATE()+1不规范,发现mysql官网也是不承认时间直接相加减的,虽然会将当前时间转换为20160802,这时候就是比较这一串字符,mysql官网是不承认用这种方式比较时间大小的,因此:

    正确的sql语句

      eg:SELECT COUNT(*) FROM USER WHERE registerDate >= CURDATE() AND registerDate < DATE_SUB(CURDATE(),INTERVAL -1 DAY);
    此时,就用到了DATE_SUB()这个函数,用法举例:

      

    今天是2016年08月01日。

    date_sub('2016-08-01',interval 1 day) 表示 2016-07-31
    date_sub('2016-08-01',interval 0 day) 表示 2016-08-01
    date_sub('2016-08-01',interval -1 day) 表示 2016-08-02

    date_sub(curdate(),interval 1 day) 表示 2016-07-31
    date_sub(curdate(),interval -1 day) 2016-08-02
    date_sub(curdate(),interval 1 month) 表示 2016-07-01
    date_sub(curdate(),interval -1 month) 表示 2016-09-01
    date_sub(curdate(),interval 1 year) 表示 2015-08-01
    date_sub(curdate(),interval -1 year) 表示 2017-08-01

     

    • 显示当前日期: SELECT DATE_FORMAT(NOW(),’%b %d %Y %h:%i %p’);
    • 显示当前日期的年月日:SELECT DATE_FORMAT(NOW(),’%Y-%m-%d’);
    • W3Cshcool中关于  mysql中函数的讲解   http://www.w3school.com.cn/sql/sql_dates.asp

     

    DATE()提取日期或日期/时间表达式的日期部分
    EXTRACT()返回日期/时间按的单独部分
    DATE_ADD()给日期添加指定的时间间隔
    DATE_SUB()从日期减去指定的时间间隔
    DATEDIFF()返回两个日期之间的天数
    DATE_FORMAT()用不同的格式显示日期/时间

     

     

     

    备注:

     

    SELECT NOW(),CURDATE(),CURTIME()

    结果类似:

    NOW()CURDATE()CURTIME()
    2016-08-01 16:25:462016-08-0116:25:46

    js中如果显示的是毫秒数或者不规则的时间可以先将时间转化一下

     function formateDate(str){
                var  datenow=new Date(str);
                var xdate=datenow.getFullYear()+"-"+(datenow.getMonth()+1)+"-"+datenow.getDate();
                return xdate;

       }

    获取一个时间的  后  8天

     

    function fun_submit(arg){

    var date1 = new Date();

    var xdate=date1.getFullYear()+"-"+(date1.getMonth()+1)+"-"+date1.getDate();

    Date.parse(xdate.replace());

    var date2 = new Date(date1);

    date2.setDate(date1.getDate()+8);

    var times = date2.getFullYear()+"-"+(date2.getMonth()+1)+"-"+date2.getDate();

    alert(times);

    }

     

     

     

     

     

     

     

    展开全文
  • 使用elementUI的时间选择控件el-date-picker后,作为参数上传到后台接收,发现后台时间比前台时间一天。 前台代码: <el-form-item label="时间"> <el-date-picker v-model="params.createTimeFrom" ...

    解决element日期选择控件上传到后台减少一天问题

    问题描述

    使用elementUI的时间选择控件el-date-picker后,作为参数上传到后台接收,发现后台时间比前台时间少一天。

    前台代码:

    <el-form-item label="时间">
    	<el-date-picker v-model="params.createTimeFrom" type="date" placeholder="选择时间" class="picker"></el-date-picker>
    	<span>-</span>
    	<el-date-picker v-model="params.createTimeTo" type="date" placeholder="选择时间" class="picker"></el-date-picker>
    </el-form-item>
    

    后台代码:

    @RequestParam(value="createTimeTo",required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") Date  createTimeTo
    

    ##原因描述
    由于控件默认日期格式和后台接收的日期格式不一致,导致问题出现

    ##解决办法
    在前端控件上添加指定日期格式的属性value-format=“yyyy-MM-dd”,修改后的前端代码

    <el-form-item label="时间">
    	<el-date-picker value-format="yyyy-MM-dd" v-model="params.createTimeFrom" type="date" placeholder="选择时间" class="picker"></el-date-picker>
    	<span>-</span>
    	<el-date-picker value-format="yyyy-MM-dd" v-model="params.createTimeTo" type="date" placeholder="选择时间" class="picker"></el-date-picker>
    </el-form-item>
    
    展开全文
  • iview(DatePicker)时间转入后台少一天 解决方案 后台注解 前台: 加个事件 @on-change @on-change="getStartTime" getStartTime(starTime) { this.leaveRecord.pDate = starTime; ...

    iview(DatePicker)时间转入后台少一天 解决方案

    后台注解

    前台:

    加个事件 @on-change

    @on-change="getStartTime"

    getStartTime(starTime) {
                    this.leaveRecord.pDate = starTime;
                },

     

     

    posted @ 2018-12-13 09:28 韦邦杠 阅读( ...) 评论( ...) 编辑 收藏
    展开全文
  • C语言实现时间的加一天或者减一天

    千次阅读 2016-03-31 12:15:43
    转换思路利用time_t类型来进行时间的换算。   #include #include #include #include #include   using std::string; #pragma  warning(disable:4996) int main() {  string _...
  • mysql当天时间和前一天时间

    千次阅读 2018-12-05 20:27:16
    一天或者前一天 :CURDATE()+1 CURDATE()-1 这是错误的写法 mysql官网也是不承认时间直接相加减的,虽然会将当前时间转换为20160802,这时候就是比较这一串字符,mysql官网是不承认用这种方式比较时间大小的 正确...
  • 后台Date类型,前端显示时间一天

    千次阅读 热门讨论 2019-02-12 15:56:53
    问题描述:前端保持传时间到后台,数据库时间保存是正确的,但是,前端查询的时候得到的时间就是少一天的 解决办法: 1.当然你可以简单直接的在后端把Date类型转成String,非常的简单粗暴 2.这是由于SpringBoot中...
  • 负责的项目中,使用的是mysql数据库,页面上要显示当天所注册人数的数量,获取当前的年月日,我使用的是 CURDATE(), 错误的sql语句  eg:SELECT COUNT(*) FROM ... 虽然 获取到的数量在测试环境中是正确的,但在...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    所以这个选项当然没有时间参数,但是可以输入个用来解释的讯息,而这信息将会送到每位使用者。 -F:在重启计算机时强迫fsck。 -time:设定关机前的时间。 -m: 将系统改为单用户模式。 -i:关机时显示系统...
  • 获得指定时间的下一天的N种方法

    千次阅读 2016-07-26 00:08:42
    有时候在进行日期计算的时候需要对日期进行加减,比如给定一个时间T,我们需要查找T到T+1的数据,最简单的方法就是转换成毫秒后加上一天对应的毫秒数,再转换回来,但是这样显得不够优雅,那么Java中有哪些方法可以...
  •  今天在用iview做前端页面开发的时候,遇到个奇葩问题(也许自己主要做后台开发,当时我还纳闷了),我在时间控件中明明选择的是2017-10-19,但是当通过vue的调试器查看的时候,竟然是这样的,如下图:  当时我...
  • 将已经集成好的软件系统,作为整个计算机系统的个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行(使用)环境下, - 对计算机系统进行系列测试活动。 根本任务 ...
  • 次博文 Time:2018年04月28日 星期六 11:37 二次补充 2018年05月02日 第章 程序设计基本方法 P29 # 1.1字符串的拼接 str1 = input(&quot;请输入个人的名字:&quot;) str2 = input(&quot;请...
  • 浦发银行 信息科技岗 大数据方向 面经

    万次阅读 多人点赞 2018-08-09 23:00:31
    、综合面 二、机试 三、专业面试 浦发面经 即兴演讲 上机测试 结构化面试 浦发银行大数据创新岗上海打卡 第部分 综合面试 第二部分 专业面试 第三部分 上机考试(只有开发和测试岗需要,别的岗可选) 浦发...
  • dump( date( 'Y-m-d', strtotime('2018-10-1 +1 day') ) ); dump( date( 'Y-m-d', strtotime('2018-10-1 +1 week') ) ); dump( date( 'Y-m-d', strtotime('2018-10-1 +1 month') ) ); dump( date( 'Y-m-d', strto...
  • Java 获取指定时间的前一天Date

    千次阅读 2016-04-07 21:01:41
    开发过程中需要获取指定Date时间的前一天。本来觉得挺简单的,用Calender.roll()方法回滚一天就行了,但是在测试过程中发现不对经。于是在这记录一下。代码如下:public class DateClass { public static void main...
  •  ... 网上取当月第一天和最后一天的SQL语句很多,有的是通过字符截取,有的是...但是看了下网上的运用函数来取第一天和最后一天时间的SQL语句几乎都像下面这样的,其实是存在问题的,存在一个临界值得问题。  本
  • js 给日期加一天或者减一天

    万次阅读 多人点赞 2018-06-20 15:20:34
    首先,我们创建个需要...一、加一天 dateTime=dateTime.setDate(dateTime.getDate()+1); dateTime=new Date(dateTime); 二、减一天  与上面相似,把setDate方法中的+1变更为-1   -----------------------...
  • 前段时间,Google工程师RaymondFarias在社交媒体爆出他的工作量:“我的同事最近和我分享了一个调查,调查指出一名高效的谷歌工程师每天大概会写 100-150行代码。...@山雨欲来在中国,一天就100行代码?明天不...
  • 方法: DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Date d1 = df.parse("2004-03-26 13:31:40"); Date d2 = df.parse("2004-01-02 11:30:24"); long ...
  • mysql 获取日期前一天一天

    万次阅读 2017-03-22 11:20:09
    mysql获取当前时间,前一天,后一天  负责的项目中,使用的是mysql数据库,页面上要显示当天所注册人数的数量,获取当前的年月日,我使用的是 CURDATE(), 错误的sql语句  eg:SELECT COUNT(*) FROM USER WHERE ...
  • 参考:上篇文章 因为电子钟表,表针的跳动不是连续的,譬如分钟每次跳动6度,时针每次跳动0.5度。而编写程序时变量h小时,m分钟每次增量为1,所以我们设夹角gap为(-6~6之间)。这样带来另个问题,次重合接近...
  • Java获取系统当前时间正确

    千次阅读 2017-03-15 13:52:03
    项目过程中生成系统当前时间时遇到了个小问题,就是生成的时间是12小时进制的不是24小时进制的,后来又发现生成的时间更当前系统时间对不上,两个问题出现的都是因为格式大小没有区分。yyyyMMdd HH:mm:ss:H是大写...
  • 后台打印的时间如下: 数据库存储时间如下:   接口返回给前台的时间如下:    相差8个小时。     原因如下: spring-boot中对于@RestController或者@Controller+@ResponseBody注解的接口方法的返回值默认...
  • 需求:在做类似于微博的android客户端的时候,要求有个定时发微薄功能,时间设置要求:初始化时间大于当前时间两分钟,设置时间不能超过十五。 解决过程:在网上找了部分参考资料,发现都不能很好的解决问题,...
  • 之前转载过篇使用python dateTime模块处理时间差的文章(原文链接),文章中讲解了如何按照days,hours和seconds单位来计算时间差。这里讲解一下如何使用dateTime模块按照minutes来计算时间差。dateTime模块本身是...
  • 最近,在Linux使用过程中,系统时间与实际时间间隔8小时,并且修改过后隔时间就会被还原,且时间间隔为1分钟左右。为解决该问题尝试过多种修改时间的方法,包括设置系统时间和硬件时间,最后发现utc时间正确,...
  • 被大创耽误的堆反思

    万次阅读 多人点赞 2018-04-08 19:23:18
    次大创项目《基于Android的声纹考勤系统》总体来说我觉得自己很失败浪费了很多时间,做了很虚无缥缈的东西。 目录 项目简述: 失败原因的分析: 我个人的原因: 外部原因: 大创项目的总结 一年后的我 ...
  • java 比较时间大小 现在是2004-03-26 13:31:40 过去是:2004-01-02 11:30:24 要获得两个日期差,差的形式为:XXXX小时XX分XX秒 方法: DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 339,769
精华内容 135,907
关键字:

一天正确的时间是多少