2

I have script for time, I need result like this but not local time I want to show Amsterdam's time for eveyone, can someone help me? my code is:

  <!DOCTYPE html>
  <html>
  <head>
    <script>
       function startTime() {
         var today=new Date();
         var h=today.getHours();
         var m=today.getMinutes();
         var s=today.getSeconds();
         m = checkTime(m);
         s = checkTime(s);
         document.getElementById('txt').innerHTML = h+":"+m+":"+s;
        var t = setTimeout(function(){startTime()},500);
      }

      function checkTime(i) {
        if (i<10) {i = "0" + i};  // add zero in front of numbers < 10
           return i;
       }

          setInterval(function(){ startTime() }, 1000);
     </script>
  </head>


  <body>

    <div id="txt"></div>

  </body>
 </html>

http://www.w3schools.com/js/tryit.asp?filename=tryjs_timing_clock

I want same but which will show only Amsterdam's time for every visitor from any country. Thank you in advance :)

user3552778
  • 104
  • 1
  • 10

3 Answers3

1

Try this:

function worldClock(zone, region){
var dst = 0
var time = new Date()
var gmtMS = time.getTime() + (time.getTimezoneOffset() * 60000)
var gmtTime = new Date(gmtMS)
var day = gmtTime.getDate()
var month = gmtTime.getMonth()
var year = gmtTime.getYear()
if(year < 1000){
year += 1900
}
var monthArray = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")

var monthDays = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31")
if (year%4 == 0){
monthDays = new Array("31", "29", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31")
}
if(year%100 == 0 && year%400 != 0){
monthDays = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31")
}

var hr = gmtTime.getHours() + zone
var min = gmtTime.getMinutes()
var sec = gmtTime.getSeconds()

if (hr >= 24){
hr = hr-24
day -= -1
}
if (hr < 0){
hr -= -24
day -= 1
}
if (hr < 10){
hr = " " + hr
}
if (min < 10){
min = "0" + min
}
if (sec < 10){
sec = "0" + sec
}
if (day <= 0){
if (month == 0){
    month = 11
    year -= 1
    }
    else{
    month -= 1
    }
day = monthDays[month]
}
if(day > monthDays[month]){
    day = 1
    if(month == 11){
    month = 0
    year -= -1
    }
    else{
    month -= -1
    }
}

    if (region == "Europe"){
    var startDST = new Date()
    var endDST = new Date()
    startDST.setMonth(2)
    startDST.setHours(1)
    startDST.setDate(31)
    var dayDST = startDST.getDay()
    startDST.setDate(31-dayDST)
    endDST.setMonth(9)
    endDST.setHours(0)
    endDST.setDate(31)
    dayDST = endDST.getDay()
    endDST.setDate(31-dayDST)
    var currentTime = new Date()
    currentTime.setMonth(month)
    currentTime.setYear(year)
    currentTime.setDate(day)
    currentTime.setHours(hr)
    if(currentTime >= startDST && currentTime < endDST){
        dst = 1
        }
}
    if (dst == 1){
    hr -= -1
    if (hr >= 24){
    hr = hr-24
    day -= -1
    }
    if (hr < 10){
    hr = " " + hr
    }
    if(day > monthDays[month]){
    day = 1
    if(month == 11){
    month = 0
    year -= -1
    }
    else{
    month -= -1
    }
    }
return monthArray[month] + " " + day + ", " + year  + " " + hr + ":" + min + ":" + sec + " DST"
}
else{
return monthArray[month] + " " + day + ", " + year  + " " + hr + ":" + min + ":" + sec
}
}   

var amstime = worldClock(1, "Europe") ;
alert("amsterdam time is: " + amstime);

LIVE DEMO

SOURCE Take a look at this source code to understand how to update the time every second.

Pedro Lobito
  • 94,083
  • 31
  • 258
  • 268
0

Why don't you use this: <?php date_default_timezone_set('Europe/Amsterdam'); ?> so now <?php date('d-m-Y') ?> will always be amsterdam time

SuperDJ
  • 7,488
  • 11
  • 40
  • 74
0

Take a look Moment.js library

You can use the data builder at momentjs.com/timezone/data/ to construct a data set with only the time zone needed.

<script>
    moment().tz("Europe/Amsterdam").format();
</script>
Hemerson Varela
  • 24,034
  • 16
  • 68
  • 69