服务器是外国的,主机时间比中国慢8小时

QQKiKi 2001-09-10 07:57:39
我想得到准确的输出,date("Y-n-j,H:i:s")函数怎么写,有没有什么好方法?
...全文
210 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQKiKi 2001-09-15
  • 打赏
  • 举报
回复
OK!!!
zxyufan 2001-09-15
  • 打赏
  • 举报
回复
<?
function AddDay($Date,$offset)//针对YYYY-mm-dd
{
$year="";
$month="";
$day="";

for ($i=0;$i<4;$i++)
{
$year = $year.$Date[$i];
}
for ($i=5;$i<7;$i++)
{
$month = $month.$Date[$i];
}
for ($i=8;$i<10;$i++)
{
$day = $day.$Date[$i];
}


for ($i=0;$i<$offset;$i++)
{
switch ($month) {
case 1:
{
if ($day==31) {
$day = 1;
$month = 2;
}
else {
$day=$day + 1;
}
}
break;
case 2:
{
if (CheckLeap($year)) {
if ($day == 29) {
$day = 1;
$month = 3;
}
else {
$day=$day + 1;
}
}
else {
if ($day == 28) {
$day = 1;
$month = 3;
}
else {
$day=$day + 1;
}
}
}
break;
case 3:
{
if ($day==31) {
$day = 1;
$month = 4;
}
else {
$day=$day + 1;
}
}
break;
case 4:
{
if ($day==30) {
$day = 1;
$month = 5;
}
else {
$day=$day + 1;
}
}
break;
case 5:
{
if ($day==31) {
$day = 1;
$month = 6;
}
else {
$day=$day + 1;
}
}
break;
case 6:
{
if ($day==30) {
$day = 1;
$month = 7;
}
else {
$day=$day + 1;
}
}
break;
case 7:
{
if ($day==31) {
$day = 1;
$month = 8;
}
else {
$day=$day + 1;
}
}
break;
case 8:
{
if ($day==31) {
$day = 1;
$month = 9;
}
else {
$day=$day + 1;
}
}
break;
case 9:
{
if ($day==30) {
$day = 1;
$month = 10;
}
else {
$day=$day + 1;
}
}
break;
case 10:
{
if ($day==31) {
$day = 1;
$month = 11;
}
else {
$day=$day + 1;
}
}
break;
case 11:
{
if ($day==30) {
$day = 1;
$month = 12;
}
else {
$day=$day + 1;
}
}
break;
case 12:
{
if ($day==31) {
$day = 1;
$month = 1;
$year = $year + 1;
}
else {
$day=$day + 1;
}
}
}
}
$result=$year."-".$month."-".$day;
return $result;
}

function Add8Hour($Date)//针对YYYY-mm-dd HH:ii:ss格式的时间
{
$Hour = "";
$Date_tmp = "";
$iiss = "";
for ($i=0;$i<11;$i++)
{
$Date_tmp = $Date_tmp.$Date[$i];
}
for ($i=11;$i<13;$i++)
{
$Hour = $Hour.$Date[$i];
}
for ($i=13;$i<20;$i++)
{
$iiss = $iiss.$Date[$i];
}

if ($Hour < 16)
{
$newHour = $Hour + 8;
$result = $Date_tmp.$newHour.$iiss;
}
else
{
$newDate = AddDay($Date_tmp,1);
$newHour = $Hour + 8 - 24;
$result = $newDate.$newHour.$iiss;
}
return $result;
}

?>
QQKiKi 2001-09-11
  • 打赏
  • 举报
回复
<?php
setlocale ("LC_TIME", "CN");
print(strftime("%X in china is "));
setlocale ("LC_TIME", "");
print(strftime("%X, in local "));
?>

但CN似乎不是中国的代码啊,服务器上的显示是:

11:58:16 in china is 11:58:16, in local


(本地时间是19:58:16)
zxyufan 2001-09-11
  • 打赏
  • 举报
回复
楼上的观点是片面的,因为如果加上8个小时后就是第二天、第二个月、第二年了呢?那岂不是写很多if then?



将服务器的时间本地格式化。

语法: string strftime(string format, int [timestamp]);

返回值: 字符串

函数种类: 时间日期




内容说明


返回值的字符串依配置的格式来决定。若有传入时间戳记值,则将时间戳记格式化返回;若无传入时间戳记值,则将目前服务器的时间本地格式化返回。月份或者星期名称随着本地语系配置 setlocale() 的不同而改变。

返回的字符串可以依下列的格式而定:


%a 星期几的缩写。
%A 星期几的全名。
%b 月份名称的缩写。
%B 月份名称的全名。
%c 本地端日期时间较佳表示字符串。
%d 用数字表示本月的第几天 (范围为 00 至 31)。
%H 用 24 小时制数字表示小时数 (范围为 00 至 23)。
%I 用 12 小时制数字表示小时数 (范围为 01 至 12)。
%j 以数字表示当年度的第几天 (范围为 001 至 366)。
%m 月份的数字 (范围由 1 至 12)。
%M 分钟。
%p 以 'AM' 或 'PM' 表示本地端时间。
%S 秒数。
%U 数字表示为本年度的第几周,第一个星期由第一个周日开始。
%W 数字表示为本年度的第几周,第一个星期由第一个周一开始。
%w 用数字表示本周的第几天 ( 0 为周日)。
%x 不含时间的日期表示法。
%X 不含日期的时间表示法。
%y 二位数字表示年份 (范围由 00 至 99)。
%Y 完整的年份数字表示,即四位数。
%Z 时区或名称缩写。
%% % 字符。



使用范例


<?php
setlocale ("LC_TIME", "C");
print(strftime("%A in Finnish is "));
setlocale ("LC_TIME", "fi");
print(strftime("%A, in French "));
setlocale ("LC_TIME", "fr");
print(strftime("%A and in German "));
setlocale ("LC_TIME", "de");
print(strftime("%A.\n"));
?>

gaoql 2001-09-11
  • 打赏
  • 举报
回复
应该是加8个小时
gaoql 2001-09-11
  • 打赏
  • 举报
回复
减8个小时不就得了(1/3天)
zxyufan 2001-09-11
  • 打赏
  • 举报
回复
不是崇拜~~是常用~~~
lyneville 2001-09-11
  • 打赏
  • 举报
回复
好象VC的msdn
zjnbgda 2001-09-11
  • 打赏
  • 举报
回复
To zxyufan(宇凡) 你好像很崇拜《php4中文手册》嘛。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧