LR中獲取當前系統時間方法


方法一:使用loadrunner的參數化獲取當前時間
使用lr的參數化,非常方便,對lr熟悉的各位朋友也能馬上上手,時間格式也有很多,可以自由選擇。
步驟:
1、將復制給aa的值參數化
2、選中abc,使用右鍵選擇"Replace with a parameter."
3、在彈出窗口內填寫參數名稱為:localtime_now
4、選擇參數類型為Date/Time
5、在屬性選項里,選擇時間格式化選項(可以選擇很多種)
6、關閉屬性窗口,確認函數創建窗口,參數化完成
7、將參數化的內容賦值給字符指針aa,需要使用lr_eval_string()函數轉換一下

示例如下:

Action()
{
char *aa;
// aa = "abc"; //未參數前
// aa = "{localtime_now}";//參數化后
aa = lr_eval_string("{localtime_now}");//最終賦值語句
lr_message("參數化獲得本地當前時間的結果是:%s",aa);
return 0;
}

運行結果:參數化獲得本地當前時間的結果是:2007-07-04 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

 

 

《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 時區名稱,如果不能得到時區名稱則返回空字符。
%% 百分號

 

常見時間格式說明
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++的一個基本計時單位。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM