---
title: "Sommartid"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/104106-sommartid"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Gislaved.net"
published: "2004-05-21T18:39:51.000Z"
updated: "2004-05-22T19:27:18.000Z"
replies: 5
views: 489
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/104106-sommartid"
---

# Sommartid

## #1 — Gislaved.net, 2004-05-21T18:39Z

Jag har vissa sidor som ligger på en server som jag inte kan ändra klockan på, och servern visar lokal tid någonstans i USA.

Jag knåpade precis ihop följande funktion för att automatiskt växla mellan sommartid och normaltid. Är den korrekt? Jag har testat med några datum, och det verkar stämma. Finns det något smidigare sätt att skriva det på?

```php
$startsommar = gmdate("Ymd02",strtotime("last Sunday",gmmktime(0,0,0,4,1,date("Y"))));
$slutsommar = gmdate("Ymd03",strtotime("last Sunday",gmmktime(0,0,0,11,1,date("Y"))));
$dagensdatum = gmdate("Ymdh");
if(($startsommar < $dagensdatum) && ($slutsommar > $dagensdatum)){
        $sommartid = 1;   // 0 = vintertid, 1 = sommartid  
} 
$datum = gmdate("YmdHis", time() + (($sommartid + 1) * 3600));
```

Permalänk: https://www.webforum.nu/p/104106

## #2 — Cri11e, 2004-05-22T08:56Z

```
date('I');
```

 
Returnerar 1 om det är sommartid och 0 om det är vintertid.

Så

```
$datum = gmdate("YmdHis", time() + ((date('I') + 1) * 3600));
```

 
Borde ge samma resultat som din funktion

Permalänk: https://www.webforum.nu/p/1352259

## #3 — Gislaved.net, 2004-05-22T15:57Z

Har du ens provat den funktionen? Den ger inte riktigt det resultat du beskriver.

Permalänk: https://www.webforum.nu/p/1352374

## #4 — nkrantz, 2004-05-22T18:16Z

$datum = gmdate("YmdHis", time() + ((date('I') \* 1) \* 3600)); borde det väl vara? 0+1 = 1, 1+1 = 2 medans 0\*1 = 0 och 1\*1 = 1...

Permalänk: https://www.webforum.nu/p/1352428

## #5 — Cri11e, 2004-05-22T18:33Z

> **Gislaved.net skrev:**
>
> Har du ens provat den funktionen? Den ger inte riktigt det resultat du beskriver.

Jag har provat funktionen och

```php
$datum = gmdate("YmdHis", time() + ((date('I') + 1) * 3600));
```

ger samma resultat som din kod.

Permalänk: https://www.webforum.nu/p/1352434

## #6 — Gislaved.net, 2004-05-22T19:27Z

Din kod visar hur som helst en timme fel. Koden kommer att fungera på en server som är inställd på rätt tidszon, men det är ju inte det jag är ute efter.

date('I') ger alltid noll på denna server, eftersom den inte tar hänsyn till daylight savings time.

Permalänk: https://www.webforum.nu/p/1352450

---

Tråden på webben: https://www.webforum.nu/amne/php/104106-sommartid
