Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2020
    Messaggi
    9

    Creare ICS con ora solare anziché legale.

    Ciao a tutto, spero in un vostro aiuto.
    Ho una pagina php che mi gestisce gli eventi in un calendario e mi genera un link dove l'utente può scaricarsi l'ICS per outlook o altro e il link aggiungere l'evento al calendario google.
    Per gestire l'ora legale o solare uso la funzione date(I) in questo modo

    codice:
    
    
    codice:
    //GESTIONE CALENDARI ****************************************************************************************************************
    if (date('I') == 1)
    	$oraInizioEventoIcs = substr($array["orain"], 0, strpos($array["orain"], ":")) - 1 . substr($array["orain"], strpos($array["orain"], ":")) . ":00+01:00";
    else
    	$oraInizioEventoIcs = $array["orain"] . ":00+01:00";	
    
    
    $dataOraInizioEventoIcs = $array["annoin"] . "-" . $array["mesein"] . "-" . $array["giornoin"] . "T" . $oraInizioEventoIcs;
    
    
    if (date('I') == 1)
    	$oraInizioEventoGoogle = substr($array["orain"], 0, strpos($array["orain"], ":")) - 2 . substr($array["orain"], strpos($array["orain"], ":"));
    else
    	$oraInizioEventoGoogle = substr($array["orain"], 0, strpos($array["orain"], ":")) - 1 . substr($array["orain"], strpos($array["orain"], ":"));
    
    
    $dataOraInizioEventoGoogle = $array["annoin"] . "-" . $array["mesein"] . "-" . $array["giornoin"] . " " . $oraInizioEventoGoogle;
    
    
    $oraInizioEventoYahoo = str_replace(":", "", substr($array["orain"], 0, strpos($array["orain"], ":")) . substr($array["orain"], strpos($array["orain"], ":"))) . "00";
    $meseInizioEventoYahoo = strlen($array["mesein"]) == 1 ? "0" . $array["mesein"] : $array["mesein"];
    $giornoInizioEventoYahoo = strlen($array["giornoin"]) == 1 ? "0" . $array["giornoin"] : $array["giornoin"];
    $dataOraInizioEventoYahoo = $array["annoin"] . $meseInizioEventoYahoo . $giornoInizioEventoYahoo . "T" . $oraInizioEventoYahoo;
    
    
    if ($array["oraout"] != "")
    {
    	if (date('I') == 1)
    		$oraFineEventoIcs = substr($array["oraout"], 0, strpos($array["oraout"], ":")) - 1 . substr($array["oraout"], strpos($array["oraout"], ":")) . ":00+01:00";
    	else
    		$oraFineEventoIcs = $array["oraout"] . ":00+01:00";
    	
    	if (date('I') == 1)
    		$oraFineEventoGoogle = substr($array["oraout"], 0, strpos($array["oraout"], ":")) - 2 . substr($array["oraout"], strpos($array["oraout"], ":"));
    	else
    		$oraFineEventoGoogle = substr($array["oraout"], 0, strpos($array["oraout"], ":")) - 1 . substr($array["oraout"], strpos($array["oraout"], ":"));
    	
    	$oraFineEventoYahoo = str_replace(":", "", substr($array["oraout"], 0, strpos($array["oraout"], ":")) . substr($array["oraout"], strpos($array["oraout"], ":"))) . "00";
    	$oraFineEventoYahoo = strlen($oraFineEventoYahoo) < 6 ? "0" . $oraFineEventoYahoo : $oraFineEventoYahoo;
    }
    else
    {
    	if (date('I') == 1)
    		$oraFineEventoIcs = $array["orain"] . ":00+01:00";
    	else
    		$oraFineEventoIcs = substr($array["orain"], 0, strpos($array["orain"], ":")) + 1 . substr($array["orain"], strpos($array["orain"], ":")) . ":00+01:00";
    	
    	$oraFineEventoGoogle = substr($oraInizioEventoGoogle, 0, strpos($oraInizioEventoGoogle, ":")) + 1 . substr($oraInizioEventoGoogle, strpos($oraInizioEventoGoogle, ":"));
    	
    	$oraFineEventoYahoo = str_replace(":", "", substr($array["orain"], 0, strpos($array["orain"], ":")) + 1 . substr($array["orain"], strpos($array["orain"], ":"))) . "00";
    	$oraFineEventoYahoo = strlen($oraFineEventoYahoo) < 6 ? "0" . $oraFineEventoYahoo : $oraFineEventoYahoo;
    }
    
    
    if ($array["annoout"] != "" && $array["meseout"] != "" && $array["giornoout"] != "")
    {
    	$dataOraFineEventoIcs = $array["annoout"] . "-" . $array["meseout"] . "-" . $array["giornoout"] . "T" . $oraFineEventoIcs;
    	
    	$dataOraFineEventoGoogle = $array["annoout"] . "-" . $array["meseout"] . "-" . $array["giornoout"] . " " . $oraFineEventoGoogle;
    	
    	$meseFineEventoYahoo = strlen($array["meseout"]) == 1 ? "0" . $array["meseout"] : $array["meseout"];
    	$giornoFineEventoYahoo = strlen($array["giornoout"]) == 1 ? "0" . $array["giornoout"] : $array["giornoout"];
    	$dataOraFineEventoYahoo = $array["annoout"] . $meseFineEventoYahoo . $giornoFineEventoYahoo . "T" . $oraFineEventoYahoo;
    }
    else
    {
    	$dataOraFineEventoIcs = $array["annoin"] . "-" . $array["mesein"] . "-" . $array["giornoin"] . "T" . $oraFineEventoIcs;
    
    
    	$dataOraFineEventoGoogle = $array["annoin"] . "-" . $array["mesein"] . "-" . $array["giornoin"] . " " . $oraFineEventoGoogle;
    	
    	$meseFineEventoYahoo = strlen($array["mesein"]) == 1 ? "0" . $array["mesein"] : $array["mesein"];
    	$giornoFineEventoYahoo = strlen($array["giornoin"]) == 1 ? "0" . $array["giornoin"] : $array["giornoin"];
    	$dataOraFineEventoYahoo = $array["annoin"] . $meseFineEventoYahoo . $giornoFineEventoYahoo . "T" . $oraFineEventoYahoo;
    }




    questo controllo funziona benissimo tranne se un utente cerca di aggiungere un evento collocato dopo il 25 Ottobre, quindi nell'ora solare, in questo cosa mi genera un ics con un'ora in meno (questo perchè la funzione date restituisce 1, quindi per lui siamo nell'ora legale anche se l'evento sarà nell'ora solare).

    Come posso risolvere secondo voi?
    Ultima modifica di onny88; 12-10-2020 a 14:57

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.