亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 求一個(gè)時(shí)間個(gè)是轉(zhuǎn)換函數(shù) [打印本頁(yè)]

作者: aychxm    時(shí)間: 2013-07-09 15:05
標(biāo)題: 求一個(gè)時(shí)間個(gè)是轉(zhuǎn)換函數(shù)
把time(0)返回的秒數(shù),轉(zhuǎn)化為年月日時(shí)分秒這樣的

不過,希望有點(diǎn)優(yōu)化,就是,如果時(shí)間是今天,就不用年月日,而是用“今天”來代替
如果年月日時(shí)昨天,則用“昨天”代替,
同樣的,前天也要。

不知道哪位大俠是否已經(jīng)實(shí)現(xiàn)過,可否共享下啊

谷歌百度了很久沒找到
作者: bruceteen    時(shí)間: 2013-07-09 16:17
time(0)肯定是今天
作者: yulihua49    時(shí)間: 2013-07-10 16:07
本帖最后由 yulihua49 于 2013-07-10 16:29 編輯
aychxm 發(fā)表于 2013-07-09 15:05
把time(0)返回的秒數(shù),轉(zhuǎn)化為年月日時(shí)分秒這樣的

不過,希望有點(diǎn)優(yōu)化,就是,如果時(shí)間是今天,就不用年月 ...

正好我做了這個(gè)。


-bash-3.00$ cvtdate .
2013.07.10
-bash-3.00$ cvtdate -1
2013.07.09
-bash-3.00$ cvtdate +1
2013.07.11
-bash-3.00$ cvtdate 2.31
2013.02.28
-bash-3.00$ cvtdate -1.2.31
2012.02.29
-bash-3.00$ cvtdate -1.31
2013.06.30
-bash-3.00$ cvtdate +100
2013.10.18

在shell中使用:
if [ $# = 0 ]
then
        DAY=`cvtdate -1`
else
        DAY=`cvtdate $1`
fi
export NLS_DATE_FORMAT="YYYYMMDDHH24:MI:SS"
./unldcsv -f ./ld.ini -W"where cms_settlement_date=to_date('$DAY','YYYY.MM.DD')" CUT_PI_EXIt >exit.txt


shell:

DELDAY=`cvtdate -60`
cms_prod <<!
-- 刪除歷史記錄
delete from recover_count_entry where txn_date<to_date('$DELDAY','YYYY.MM.DD');



/************************************************************************/
/*function:cvtdate 相對(duì)日期轉(zhuǎn)換函數(shù),返回準(zhǔn)儒略歷數(shù)(以天為單位)          */
/*description:                                                          */
/*基本形式:str(YYYY.MM.DD), refday:參考日期                             */
/*如果哪一段缺省,以參考日期的相應(yīng)數(shù)字代替                               */
/*DD = 31,將被參考日期月底日取代                                        */
/*哪一段以+ -開頭,相對(duì)參考日期的相應(yīng)數(shù)字運(yùn)算                           */
/*例:                                                                  */
/*  .代表當(dāng)日,..代表本月當(dāng)日。                                         */
/*  +1代表明天,-1代表昨天, .31或31或.L代表本月月底。                   */
/*  .-1.或-1. 代表上月同日,-1.31代表上月月底。                         */
/*  -1.1.1代表去年1月1日。 -1..代表去年本月當(dāng)日。-1.2.31代表去年2月底   */
/*  2009.1.1代表2009年1月1日。.1.1或1.1代表今年1月1日。.1或1代表本月1日 */
/************************************************************************/
INT4    cvtdate(char *str,INT4 refday);

作者: aychxm    時(shí)間: 2013-07-10 22:54
還真不是我要的,其實(shí)這種需求類似一些論壇里回復(fù)時(shí)間顯示

比如今天是7月10日,有個(gè)回帖是7月9日,那么顯示的回帖時(shí)間是“昨天”這兩個(gè)字,而不是7-9
而如果時(shí)間比較早了,如6月5日,那么就顯示6-5


作者: linux_c_py_php    時(shí)間: 2013-07-11 12:45
這還不簡(jiǎn)單啊, 轉(zhuǎn)成struct tm看一下其他字段都相同, mday是否-1就是了.
作者: mightofcode    時(shí)間: 2013-07-11 13:20
自己寫個(gè)  不復(fù)雜
作者: socay2    時(shí)間: 2013-07-13 00:38
  1. #include <stdio.h>
  2. #include <time.h>

  3. int main()
  4. {
  5.     time_t t;
  6.     // get time in seconds
  7.     time(&t);
  8.     // format time
  9.     printf("%s", ctime(&t));
  10.     // covert time
  11.     struct tm *tm;
  12.     tm = localtime(&t);
  13.     // print date
  14.     printf("%d-%02d-%02d %02d:%02d:%02d\n",
  15.             tm->tm_year+1900, // year since 1900
  16.             tm->tm_mon+1, // month 0-11
  17.             tm->tm_mday, // day 1-31
  18.             tm->tm_hour, // hour 0-23
  19.             tm->tm_min, // minute 0-59
  20.             tm->tm_sec); // seconds 0-59

  21.     return 0;
  22. }
復(fù)制代碼
不管昨天還是前天 都是相對(duì)于今天來命名的, 所以只要得到今天的時(shí)間值, 其他的任何時(shí)間都可以隨便命名.
你可以把 比今天的 tm_mday 小1 的日期 叫做 “今天他爹”, 把 比 tm_day 大1 的日期叫做 “今天他兒”

論壇中的回復(fù)日期 肯定是用數(shù)據(jù)庫(kù)保存起來的, 在顯示之前 把該值取出來 和當(dāng)前時(shí)間值 對(duì)比 就可以顯示 其“名字” 了
作者: aychxm    時(shí)間: 2013-07-13 09:05
我知道原理,如果有人做過類似的,能否貢獻(xiàn)下唄。或者用過類似c++的,告訴下地址,我去下載
作者: pmerofc    時(shí)間: 2013-07-13 11:14
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: hqw19881118    時(shí)間: 2013-07-16 00:05
路過,學(xué)習(xí)了struct tm
作者: beyondcj    時(shí)間: 2013-08-08 12:49
:wink:新手求助。!
作者: csumck    時(shí)間: 2013-08-09 09:41
我們?cè)谟玫拇a,應(yīng)該是你要的

  1. #include <time.h>
  2. #include <sys/time.h>

  3. /**
  4. * get the local date or time in specified time zone for the specified UTC timestamp.
  5. * you can pass NULL for pointer-typed parameters.
  6. * return 0 on sucess, return -1 if error occured.
  7. * @year will be the A.D number, @month will be 1~12, @mday will be 1~31
  8. */
  9. int util_time(time_t timestamp, int32_t* year, int32_t* month, int32_t* mday, int32_t* hour, int32_t* minute, int32_t* second, int32_t zone)
  10. {
  11.         timestamp += zone*3600;
  12.         struct tm tmresult;
  13.         if(NULL==gmtime_r(&timestamp, &tmresult))
  14.                 return -1;
  15.         if(NULL!=year)
  16.                 *year = tmresult.tm_year + 1900;
  17.         if(NULL!=month)
  18.                 *month = tmresult.tm_mon + 1;
  19.         if(NULL!=mday)
  20.                 *mday = tmresult.tm_mday;
  21.         if(NULL!=hour)
  22.                 *hour = tmresult.tm_hour;
  23.         if(NULL!=minute)
  24.                 *minute = tmresult.tm_min;
  25.         if(NULL!=second)
  26.                 *second = tmresult.tm_sec;
  27.         return 0;
  28. }
復(fù)制代碼
這樣調(diào)用
  1. util_time(stamp, &year, &mon, &mday, &hour, &minute, &second, 8);
復(fù)制代碼
然后自己sprintf一下就可以了
作者: zdhsoft    時(shí)間: 2013-08-23 18:32
http://www.cppblog.com/zdhsoft/archive/2013/06/27/201343.html 這里是我開發(fā)服務(wù)器常用的時(shí)間函數(shù),看看能不能對(duì)你有用。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2