php $delaytime /= $delaytime,计算PHP / MySQL / JavaScript系统中的时差

我想知道从现在到某一点计算时间差的最佳方法是什么,比如倒数时间.

我有一个在某个时间点有关闭时间的拍卖,这个时间以“DATETIME 00-00-000 00:00:00”格式存储在MySQL记录中.此记录称为关闭时间.

现在在我的网站上,我有JavaScript代码通过PHP文件获取此时间. JavaScript使用setInterval 1000每秒循环.PHP文件从db获取关闭时间,并以此格式将其发回

strtotime($result['closetime']);

我得到了请求的时间,我想使用服务器时间,而不是JavaScript中的时间,因为用户的时钟可以关闭.

strtotime(date("H:i:s", $_SERVER['REQUEST_TIME']))

我发送回这两个时间戳并在JavaScript中计算它们之间的时差.我使用这个函数来做,从PHP发回的值我调用currentTime和closeTime,我认为这应该是清楚的.

function auctionDelayTime(currentTime,closeTime){

totaldelay = closeTime - currentTime;

if(totaldelay <= 0){

return 'ended';

}else{

if( days=parseInt((Math.floor(totaldelay/86400))) )

totaldelay = totaldelay % 86400;

if( hours=parseInt((Math.floor(totaldelay/3600))) )

totaldelay = totaldelay % 3600;

if( minutes=parseInt((Math.floor(totaldelay/60))) )

totaldelay = totaldelay % 60;

if( seconds=parseInt((Math.floor(totaldelay/1))) )

totaldelay = totaldelay % 1;

return hours+':'+formatTimes(minutes)+':'+formatTimes(seconds);

}

}

function formatTimes(value){

return value < 10 ? '0'+value : value;

}

我认为这是一个非常多的代码做一些如此简单的事情.有没有人有更好的解决方案或更多’美丽’的代码.

请享用!

解决方法:

var d = new Date(difference_in_milliseconds);

var seconds = d.getSeconds();

var minutes = d.getMinutes();

var hours = d.getHours() - 1; //See note

注意:奇怪的是,由于我不理解的原因,小时值比我预期的大1.看起来像“1970年1月1日午夜”是凌晨1点:-)

更新:1的差异是由于我的时区(GMT 1)的偏移.

轻微的改变将解决这个问题:

var d = new Date();

var offset = d.getTimezoneOffset() * 60000;

var d = new Date(difference_in_milliseconds + offset);

var seconds = d.getSeconds();

var minutes = d.getMinutes();

var hours = d.getHours();

标签:php,javascript,ajax,datetime

来源: https://codeday.me/bug/20190710/1423331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include <FastLED.h> #define LED_PIN 3 #define LED_COUNT 42 #define BRIGHTNESS 255 #define LED_TYPE WS2812B #define COLOR_ORDER GRB CRGB leds[LED_COUNT]; void setup() { FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, LED_COUNT); FastLED.setBrightness(BRIGHTNESS); } void loop() { int center = LED_COUNT / 2; // 计算心位置 int brightness = 0; int fadeAmount = 5; int delayTime = 25; // 初始化延时时间为50毫秒 //红色从两端开始亮起 /*for (int i = 0; i <= center; i++) { leds[i].setRGB(0, 255, 0); // 从第一个灯开始向间亮起,设置红色 leds[LED_COUNT - 1 - i].setRGB(255, 0, 0); // 从最后一个灯开始向间亮起,设置红色 FastLED.show(); delay(delayTime); // 延时 delayTime -= 1; // 延时时间逐渐减少 } delayTime = 25; // 重置延时时间为50毫秒 for (int i = 0; i <= center; i++) { leds[i].setRGB(0,0, 0); // 从第一个灯开始向间熄灭 leds[LED_COUNT - 1 - i].setRGB(0, 0, 0); // 从最后一个灯开始向间熄灭 FastLED.show(); delay(delayTime); // 延时 delayTime += 1; // 延时时间逐渐增加 } */ // 从心位置开始向两端亮起 for (int i = center; i >= 0; i--) { leds[i].setRGB(0, 255, 0); // 从心位置开始向两端亮起,设置红色 leds[LED_COUNT - 1 - i].setRGB(0, 255, 0); // 从心位置开始向两端亮起,设置红色 FastLED.show(); delay(delayTime); // 延时 delayTime += 1; // 延时时间逐渐减少 } delayTime = 25; // 重置延时时间为50毫秒 for (int i = center; i >= 0; i--) { leds[i].setRGB(0, 0, 0); // 从心位置开始向两端熄灭 leds[LED_COUNT - 1 - i].setRGB(0, 0, 0); // 从心位置开始向两端熄灭 FastLED.show(); delay(delayTime); // 延时 delayTime -= 1; // 延时时间逐渐增加 } }另外增加一条灯带
06-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值