如何重新定义time()函数 PHP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何重新定义time()函数 PHP相关的知识,希望对你有一定的参考价值。

linux空间 有8小时时差。 全局有使用time()函数 怎么才能通过一个time(() = 来减去8小时呢,谢谢!

参考技术A 做个全局设置就可以了 因为在php5以及起以上的版本,默认情况下的时间会与本地时间出现时差,时间函数的输出结果总是相差8个小时,8个小时,很熟悉的时差,猜测应该是时区设置的原因。通过观察phpinfo()函数的输出结果,发现有一个参数date.timezone默认设置为UTC,是格林威治时间8 U& x9 G; V/ T5 i, ^。打开php.ini发现没有date.timezone的选项,估计是采用默认值,PHP手册中有完整的时区列表。对于东八区,可用的有Asia/Chongqing、 Asia/Chungking、Asia/Hongkong、Asia/Shanghai、Asia/Taipei、PRC、Etc/GMT+8等(呵呵 不知道为什么没有beijing),任选一个就可以了。
方法1、在代码中增加如下命令:
<?php
date_default_timezone_set('PRC');//其他东八去时间表示均可
?>
方法2、配置php.ini文件,设置如下:
date.timezone=PRC; //中国:PRC如果没有此项在任意位置添加即可,添加后别忘记重启APACHE服务器
参考技术B 方法2、配置php.ini文件, 参考技术C $hours = time() + (8 * 60 * 60); 这个基本正解! 参考技术D $hours = time() + (8 * 60 * 60);

如何在发布模式下使用宏重新定义函数?

【中文标题】如何在发布模式下使用宏重新定义函数?【英文标题】:How do I use a macro to redefine a function in release mode? 【发布时间】:2012-07-10 03:16:55 【问题描述】:

使用 C++,我需要一个宏来替换在发布模式下运行的函数以不执行任何操作。因此,在调试模式下,该函数将被执行,但在发布模式下则不会。

类似这样的:

static void foo(int,int)

#ifdef NDEBUG
#define foo(x,y)
#endif

...函数体在单独的 .cpp 文件中定义,并且是类的一部分,这就是为什么我认为这不起作用?

实际代码..

标题

static void ValidateInput(const SeriesID *CurrentSeries, const AEnum_TT_TICK_ROUND& roundType = TT_TICK_ROUND_NONE);

.cpp

void TTBaseTick::ValidateInput(const SeriesID *CurrentSeries, const AEnum_TT_TICK_ROUND& roundType)

#ifndef _DEBUG
if (!CurrentSeries)

  throw TTTick::Ex(TTTick::SeriesNull);

else if (CurrentSeries->precision <= 0)

    throw TTTick::Ex(TTTick::PrecisionInvalid);

else if(!roundType.IsValidValue(roundType))

    throw TTTick::Ex(TTTick::InvalidParam);

#endif

【问题讨论】:

为什么不能对 .cpp 文件中的函数定义本身这样做? foo 是在其他地方声明的类的静态成员函数吗? 神秘 - 我得到一个没有生成目标文件的错误 H3nr1x - 不,它只在这个类中声明 【参考方案1】:
static void foo(int,int); // declaration



// Definition in your cpp file.
void foo( int x, int y )

#ifndef NDEBUG
    // Code for debug mode
#endif

【讨论】:

这不起作用,因为我得到一个错误,没有生成目标文件 @user1513555 对我来说工作正常。可能是其他问题。你能把代码贴在你使用它的地方吗? 发表在原帖中,我想可能是因为数据类型实际上不是整数? @Bullsfan127 AEnum_TT_TICK_ROUND 是枚举吗? 是的,它是一个编译时敏捷枚举【参考方案2】:
static void foo_(int, int);

#ifdef NDEBUG
#define foo(x,y)
#else
#define foo(x,y)   foo_(x,y)
#endif

【讨论】:

如果他能改变函数,他还不如把条件编译放在它的实现中,跳过所有引入的函数式宏的问题。 是的,我不能更改函数或其名称,只是希望它在不调试时基本跳过函数调用。优化代码

以上是关于如何重新定义time()函数 PHP的主要内容,如果未能解决你的问题,请参考以下文章

PHP time() 有时会关闭几秒钟,然后在下次调用时更正

PHP time() 和 DST 问题结束 - DST 结束后 1 小时

如何重新定义time()函数 PHP

如何让网页局部定时刷新?

如何在发布模式下使用宏重新定义函数?

php与js时间戳相互转换