2

我想让我的用户能够选择Swatch Internet Time作为他们的时间格式。

我现在如何尝试:

function startTime(){
    var d = new Date(),
        h = d.getHours(),
        m = d.getMinutes(),
        s = d.getSeconds(),
        time = "@"+parseFloat((h*3600+m*60+s*1)*0.01157,10).toString().replace(/(\.\d{1,2})\d*$/, "$1");

    $('#time').html(time);
}

根据描述,样本时间是无时区偏移的,因此使用用户的系统时间将不起作用。

我能想到的另一种方法是向 php 文件发送 ajax 请求,该文件通过内置date('B')函数返回当前的样本时间,但是我不能使用 2 位小数,而且还会产生不必要的流量。

$.ajax({type:'GET',url:'../time.php'}).done(function(data){ var time = data });

时间.php:

<?php echo date("B") ?>

必须有某种方式以某种@###.##格式返回样本时间,我很想知道。

startTime()函数被调用 using setInterval(startTime,750),所以我需要一个可以在那个时间段内工作的解决方案。

4

3 回答 3

5

JavaScript 有一个函数.getTimezoneOffset(),它以分钟为单位返回 GMT 的偏移量。

只需将瑞士比尔时区偏移(+60 分钟)减去当地时区偏移即可。差异应该是为您提供 Swatch 时间的偏移量。然后在此基础上进行节拍计算。

您也可以只使用.getUTCHours(),.getUTCMinutes()等,这基本上是 GMT。格林威治标准时间比瑞士比尔早一小时。因此,您只需在计算中添加一个小时即可获得 Swatch 时间。

演示:http: //jsfiddle.net/qF8Bt/

于 2013-02-20T19:24:00.590 回答
1

我想让@JohnBoker 在评论中提出的解决方案更加明显。一个由 Paul Philippov 编写的JavaScript Date 类扩展,我一直在使用它。该方法采用一个参数,该参数指定要返回的小数位数。

function startTime(){
    var d = new Date(),
        time = d.toInternetTime(2);

    $('#time').html(time);
}
setInterval(startTime,500);

在下面尝试一下:

function startTime() {
    var d = new Date(),
        time = d.toInternetTime(2);
    
    $('#time').html(time);
}
setInterval(startTime, 500)
body{margin:0}#time{font-family:monospace;display:block;width: 100%;font-size:2em;height:2em;display:block;text-align:center;position:absolute;top:calc(50% - 1em)}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://themactep.com/js/ppds.date.js"></script>
<span id=time></span>

于 2015-04-16T15:59:27.627 回答
0

我只是有理由编写一个样本节拍功能,所以将在这里发布以供后代使用:

function getSwatchBeat(date, places = 3) {
  return (((+date + 3.6e6) % 8.64e7) / 8.64e4).toFixed(places);
}

let d = new Date();
console.log(`Current swatch beat for ${d.toLocaleString()} is ${getSwatchBeat(d, 1)}`);

它只是将 UTC 时间增加 1 小时以适应 Biel,然后除以一天的千分之一。我不知道 PHP 函数返回多少小数位,但这很容易调整。

于 2019-08-01T01:54:30.433 回答