zoukankan      html  css  js  c++  java
  • LR中获取当前系统时间的方法

    方法一:使用loadrunner的参数化获取当前时间
    步骤:
    1、选中时间abc,使用右键选择"Replace with a parameter."
    2、在弹出窗口内填写参数名称为:localtime_now
    3、选择参数类型为Date/Time
    4、在属性选项里,选择时间格式化选项(可以选择很多种)
    5、关闭属性窗口,确认函数创建窗口,参数化完成

    示例如下:
    ===========================================
    Action()
    {
    char *aa;
    // aa = "abc"; //未参数前
    // aa = "{localtime_now}";//参数化后
    aa = lr_eval_string("{localtime_now}");//最终赋值语句
    lr_message("参数化获得本地当前时间的结果是:%s",aa);
    return 0;
    }

    运行结果:参数化获得本地当前时间的结果是:2017-03-16 14:01:39.746
    ===========================================


    方法二:使用C语言日历函数获取当前系统时间
    使用的time()和ctime()函数,得到日历格式的时间,2个函数使用都很方便。
    函数出处:time.h
    示例如下:
    ===========================================
    Action()
    {
    long t;
    time(&t);//获取当前时间
    lr_message("直接获取当前时间的结果是:%s",ctime(&t));
    return 0;
    }

    运行结果:直接获取当前时间的结果是:Wed Jul 04 14:01:39 2007
    ===========================================


    方法三:使用tm结构获得组成分解的当前系统时间
    使用C语言的tm结构,把时间分解成若干元素,这样如果我们只想得到星期、年份、当前秒等值就非常方便。
    ANSI C标准:tm表示的结构为时间分解结构(就是把时间分解为表示时间的各个组成)
    结构出处:time.h
    注意:tm结构的名字"tm"不可修改;结构中的9项顺序不可更改;
    示例如下:
    ===========================================
    /*
    标准库:time.h
    ANSI C标准:tm表示的结构为时间分解结构(就是把时间分解为表示时间的各个组成)
    */
    struct tm {
    int second; //取得当前秒数(在分钟后);取值区间为[0,59]
    int minute; //取得当前分钟数(在小时后);取值区间为[0,59]
    int hour; //取得当前小时数(从凌晨0点开始);取值区间为[0,23]
    int day; //取得当前天数(从上月结束开始);取值区间为[1,31]
    int month; //取得当前月份数(从1月开始);取值区间为[0,11]
    int year; //取得当前年份数(从1900年开始)
    int weekday; //取得当前日期数(为了获取星期几,从上个星期日开始);取值区间为[0,6]
    int yearday; //取得当前年份天数(从1月1日开始);取值区间为[0,365]
    int daylight; //取得当前夏令时标识符,实行夏令时的时候,daylight取得一个正数
    //不实行夏令时的进候,daylight为0;
    //不了解情况时,daylight为负数
    };

    Action()
    {
    long timenow;//定义保存时间的变量
    struct tm *now;//定义结构指针
    int a,b,c,d;//非别存储小时、分钟、秒、星期
    char *week;
    time(&timenow);//获取当前时间
    now = (struct tm *)localtime(&timenow);//把当前时间的结构指针赋值给now
    a = now->hour;//获取hour值
    b = now->minute;//获取minute值
    c = now->second;//获取second值
    d = now->weekday;//获取week值

    switch(d)//判断得到中文的星期
    {
    case 1:week ="星期一";//如果d=1,那么就是星期一,以下类似
    break;
    case 2:week ="星期二";
    break;
    case 3:week ="星期三";
    break;
    case 4:week ="星期四";
    break;
    case 5:week ="星期五";
    break;
    case 6:week ="星期六";
    break;
    case 0:week ="星期日";
    break;
    };
    lr_message ("使用结构获取的当前时间为:%d:%d:%d,%s",a,b,c,week);
    return 0;
    }

    运行结果:使用结构获取的当前时间为:14:1:40,星期三
    ===========================================


    方法四:lr_save_datetime
    void lr_save_datetime(const char *format, int offset, const char *name);
    中文解释:
    lr_save_datetime将当前日期和时间,或具有指定偏移的日期和时间保存在参数中。如果达到MAX_DATETIME_LEN个字符,结果字符串将被截断。
    参数说明:
    1、const char *format
    格式化信息
    同fopen、lr_message等相同;例如:"the first is %s"
    2、int offset
    时间的偏移量:
    DATE_NOW(现在的日期)
    TIME_NOW(现在的时间)
    ONE_DAY(一天的时间)
    ONE_HOUR(一小时的时间)
    ONE_MIN(一分钟的时间)
    需要注意的是,时间的偏移量可以使用公式,例如:DATE_NOW+ONE_DAY
    这样,我们就可以取得昨天、明天的日期了
    DATE_NOW-ONE_DAY(昨天)
    DATE_NOW+ONE_DAY(明天)
    那么,我们就可以使用如下表示得到前天的日期
    lr_save_datetime("%Y-%B-%d",DATE_NOW-2*(ONE_DAY),"abc");
    lr_save_datetime("%Y-%B-%d",DATE_NOW-2*24*(ONE_HOUR),"abc");
    lr_save_datetime("%Y-%B-%d",DATE_NOW-2*24*60*(ONE_MIN),"abc");
    当然,我们也可以使用如下表示2个小时后的时间
    lr_save_datetime("%H:%M:%S",TIME_NOW+2*(ONE_HOUR),"ab"); 
    lr_save_datetime("%H:%M:%S",TIME_NOW+2*60*(ONE_MIN),"ab");
    3、const char *name
    参数保存的参数名;使用时lr_eval_string("{参数名}")
    示例如下:
    ===========================================
    Action()
    {
    lr_save_datetime("%y-%b-%d",DATE_NOW-2*24*(ONE_HOUR),"abc");
    //保存前天的日期到参数abc中
    lr_message("the day before yesterday is:%s",lr_eval_string("{abc}"));
    //输出abc的值
    lr_save_datetime("%H:%M:%S",TIME_NOW+2*(ONE_HOUR),"ab");
    //保存2个小时后的时间到参数ab中
    lr_message("the time after two hour is:%s",lr_eval_string("{ab}"));
    //输入ab的值
    return 0;
    }

    执行结果如下:
    the day before yesterday is:07-七月-04
    the time after two hour is:15:33:41
    ===========================================

    附录:
    1)《lr_save_datetime格式参数表》
    %a 星期几的简写
    %A 星期几的全称
    %b 月分的简写
    %B 月份的全称
    %c 标准的日期的时间串
    %C 年份的后两位数字
    %d 十进制表示的每月的第几天
    %D 月/天/年
    %e 在两字符域中,十进制表示的每月的第几天
    %F 年-月-日
    %g 年份的后两位数字,使用基于周的年
    %G 年分,使用基于周的年
    %h 简写的月份名
    %H 24小时制的小时
    %I 12小时制的小时
    %j 十进制表示的每年的第几天
    %m 十进制表示的月份
    %M 十时制表示的分钟数
    %n 新行符
    %p 本地的AM或PM的等价显示
    %r 12小时的时间
    %R 显示小时和分钟:hh:mm
    %S 十进制的秒数
    %t 水平制表符
    %T 显示时分秒:hh:mm:ss
    %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
    %U 第年的第几周,把星期日做为第一天(值从0到53)
    %V 每年的第几周,使用基于周的年
    %w 十进制表示的星期几(值从0到6,星期天为0)
    %W 每年的第几周,把星期一做为第一天(值从0到53)
    %x 标准的日期串
    %X 标准的时间串
    %y 不带世纪的十进制年份(值从0到99)
    %Y 带世纪部分的十制年份
    %z,%Z 时区名称,如果不能得到时区名称则返回空字符。
    %% 百分号

    2)常见时间格式说明
    Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。(实际UTC和GMT时间又细微差差距)

    Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。在C语言中通过time函数获得日历时间。
    日历时间(Calendar Time)是通过time_t数据类型来表示的,用time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。
    time_t实际上是长整型,到未来的某一天,从一个时间点(一般是1970年1月1日0时0分0秒)到那时的秒数(即日历时间)超出了长整形所能表示的数的范围怎么办?对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒。为了能够表示更久远的时间,一些编译器厂商引入了64位甚至更长的整形数来保存日历时间。比如微软在Visual C++中采用了__time64_t数据类型来保存日历时间,并通过_time64()函数来获得日历时间(而不是通过使用32位字的time()函数),这样就可以通过该数据类型保存3001年1月1日0时0分0秒(不包括该时间点)之前的时间。

    epoch:指的是一个特定的时间点:1970-01-01 00:00:00 UTC
    UNIX时间戳:Unix时间戳(英文为Unix time, POSIX time 或 Unix timestamp)是从Epoch(1970年1月1日00:00:00 UTC)开始所经过的秒数,不考虑闰秒。
    一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。
    在大多数的UNIX系统中UNIX时间戳存储为32位,这样会引发2038年问题或Y2038。

    clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。

  • 相关阅读:
    Sqlserver2005迁移至Oracle系列之二:生成存储过程
    Sqlserver:在sql2005查看索引的碎片统计情况,并给出处理意见的自动化批处理脚本
    Sqlserver:利用Sqlserver2005的数据库触发器开发的数据库审核追踪系统,可以跟踪对象的修改信息及修改源代码
    Sqlserver2005迁移至Oracle系列之一:生成表
    中国软件业的现状浅析
    Java之异常与错误的区别及java的异常体系
    SQL优化34条
    swftools转换文件时线程堵塞问题的解决方法
    中国软件开发需要注意的地方
    Flex 应用内存泄露的分析与诊断
  • 原文地址:https://www.cnblogs.com/Jadie/p/6560049.html
Copyright © 2011-2022 走看看