• 29-08-2017, 13:47:21
    #1
    Merhaba

    2000 yılından başlayarak her saniyede +1 eklenerek giden bir sayıyı gerçek zamana döndürmeye yarayan bir program yazmaya çalışıyorum.

    Bunun bildiğiniz basit bir yöntemi var mı bilmiyorum ancak kendi hesaplamalarımı yaparak sonuca ulaşmak için programı yazdım. (Bildiğiniz daha kesin bir yöntem varsa belirtiniz lütfen)

    Örnek zaman: 9288824 -> 2017-08-29 13:44:00

    function JulianDateHesapla($number){
    
    	
    $dakikayabol 	=	 $number / "60"; 		//Toplam Saati buluruz
    $dakikayabol	=	(int) $dakikayabol;
    
    $Artandakika	=	$number % "60";			// + dakika
    $Artandakika    =	(int) $Artandakika;
    
    $saatbol		=	$dakikayabol / "24";	//Toplam Gün
    $saatbol		=	(int) $saatbol;
    
    $Artansaat		=	$dakikayabol % "24";	// + saat
    $Artansaat		=	(int) $Artansaat;
    
    $yilbul			=	$saatbol / "365";		//Yıl bulur
    $yilbul			=	(int) $yilbul	;			
    
    $Artangun		=	$saatbol % "365";		// + gün
    $Artangun		=	(int) $Artangun;
    
    $artikgun		=	"1";					// Artık gün
    $ay 			=	"0";	
    	
    if($yilbul >= "4"){
    	
    if($yilbul % 4 == 0 ){
    
    	$artikgun	=	($yilbul / "4") - "1" ;	
    	$artikgun	=	(int) $artikgun ;
    
    	}else{
    
    	$artikgun	=	($yilbul / "4")  ;	
    	$artikgun	=	(int) $artikgun ;
    
    	}
    	$Artangun	=	$Artangun - $artikgun;
    	
    	if(($yilbul % "4") == "0" ){			// 2000-2004-2008 gibi artık günü olan yıllarsa
    		if		( $Artangun <= "31" )						{ 	$ay	=	"01" ;   }
    		else if ( "31" < $Artangun && $Artangun <= "60" )	{	$ay	=	"02" ;		$Artangun 	=	$Artangun - "31";}
    		else if ( "60" < $Artangun && $Artangun <= "91" )	{	$ay	=	"03" ;		$Artangun 	=	$Artangun - "60";}
    		else if ( "91" < $Artangun && $Artangun <= "121" )	{	$ay	=	"04" ;		$Artangun 	=	$Artangun - "91";}
    		else if ( "121" < $Artangun && $Artangun <= "152" )	{	$ay	=	"05" ;		$Artangun 	=	$Artangun - "121";}
    		else if ( "152" < $Artangun && $Artangun <= "182" )	{	$ay	=	"06" ;		$Artangun 	=	$Artangun - "152";}
    		else if ( "182" < $Artangun && $Artangun <= "213" )	{	$ay	=	"07" ;		$Artangun 	=	$Artangun - "182";}
    		else if ( "213" < $Artangun && $Artangun <= "244" )	{	$ay	=	"08" ;		$Artangun 	=	$Artangun - "213";}
    		else if ( "244" < $Artangun && $Artangun <= "274" )	{	$ay	=	"09" ;		$Artangun 	=	$Artangun - "244";}
    		else if ( "274" < $Artangun && $Artangun <= "305" )	{	$ay	=	"10" ;		$Artangun 	=	$Artangun - "274";}
    		else if ( "305" < $Artangun && $Artangun <= "335" )	{	$ay	=	"11" ;		$Artangun 	=	$Artangun - "305";}
    		else if ( "335" < $Artangun && $Artangun <= "366" )	{	$ay	=	"12" ;		$Artangun 	=	$Artangun - "335";}
    	} else { 								// değilse
    		if		( $Artangun <= "31" )						{ 	$ay	=	"01" ;    }								
    		else if ( "31" < $Artangun && $Artangun <= "59" )	{	$ay	=	"02" ;		$Artangun 	=	$Artangun - "31";}
    		else if ( "59" < $Artangun && $Artangun <= "91" )	{	$ay	=	"03" ;		$Artangun 	=	$Artangun - "59";}
    		else if ( "90" < $Artangun && $Artangun <= "121" )	{	$ay	=	"04" ;		$Artangun 	=	$Artangun - "90";}
    		else if ( "120" < $Artangun && $Artangun <= "152" )	{	$ay	=	"05" ;		$Artangun 	=	$Artangun - "120";}
    		else if ( "151" < $Artangun && $Artangun <= "182" )	{	$ay	=	"06" ;		$Artangun 	=	$Artangun - "151";}
    		else if ( "181" < $Artangun && $Artangun <= "213" )	{	$ay	=	"07" ;		$Artangun 	=	$Artangun - "181";}
    		else if ( "212" < $Artangun && $Artangun <= "244" )	{	$ay	=	"08" ;		$Artangun 	=	$Artangun - "212";}
    		else if ( "243" < $Artangun && $Artangun <= "274" )	{	$ay	=	"09" ;		$Artangun 	=	$Artangun - "243";}
    		else if ( "273" < $Artangun && $Artangun <= "305" )	{	$ay	=	"10" ;		$Artangun 	=	$Artangun - "273";}
    		else if ( "304" < $Artangun && $Artangun <= "335" )	{	$ay	=	"11" ;		$Artangun 	=	$Artangun - "304";}
    		else if ( "334" < $Artangun && $Artangun <= "366" )	{	$ay	=	"12" ;		$Artangun 	=	$Artangun - "334";}
    		}
    	}
    
    	if($ay == 1 || $ay == 2 || $ay == 3 || $ay == 4 || $ay == 5 || $ay == 6 || $ay == 7 ||$ay == 8 || $ay == 9 || $ay == 0 ){ $ay	=	(string) $ay;}
    	if($Artangun == 1 || $Artangun == 2 || $Artangun == 3 || $Artangun == 4 || $Artangun == 5 || $Artangun == 6 || $$Artangun == 7 ||$Artangun == 8 || $Artangun == 9 || $Artangun == 0 ){ $Artangun	=	(string) "0".$Artangun;}
    	if($Artansaat == 1 || $Artansaat == 2 || $Artansaat == 3 || $Artansaat == 4 || $Artansaat == 5 || $Artansaat == 6 || $Artansaat == 7 ||$Artansaat == 8 || $Artansaat == 9 || $Artansaat == 0 ){ $Artansaat	=	(string) "0".$Artansaat;}
    	if($Artandakika == 1 || $Artandakika == 2 || $Artandakika == 3 || $Artandakika == 4 || $Artandakika == 5 || $Artandakika == 6 || $Artandakika == 7 ||$Artandakika == 8 || $Artandakika == 9 || $Artandakika == 0 ){ $$Artandakika	=	(string) "0".$Artandakika;}
    	
    	 $tarih	=	"20".$yilbul."-".$ay."-".$Artangun." ".$Artansaat.":".$Artandakika.":00";
    
    	 return $tarih;
    
    
    }
    Yazdığım programı uzun süredir test ediyorum tek bir problemi var hala çözemediğim. Normalde ayın son günü (Temmuzu örnek veriyorum) 31.07.2017 den sonra 01.08.2017 olması lazımken programımda 32.07.2017 oluyor ertesi gün düzeliyor ve 02.08.2017 olarak devam ediyor. Her ay sonu 1 gün ekliyor üstüne. Bunun nedeni ne olabilir, birde bu yapacağım işlemi daha kolay ve kesin bir yöntemle çözebilir miyim?
  • 29-08-2017, 14:18:25
    #2
    baskiki adlı üyeden alıntı: mesajı görüntüle
    Merhaba

    2000 yılından başlayarak her saniyede +1 eklenerek giden bir sayıyı gerçek zamana döndürmeye yarayan bir program yazmaya çalışıyorum.

    Bunun bildiğiniz basit bir yöntemi var mı bilmiyorum ancak kendi hesaplamalarımı yaparak sonuca ulaşmak için programı yazdım. (Bildiğiniz daha kesin bir yöntem varsa belirtiniz lütfen)

    Örnek zaman: 9288824 -> 2017-08-29 13:44:00

    function JulianDateHesapla($number){
    
    	
    $dakikayabol 	=	 $number / "60"; 		//Toplam Saati buluruz
    $dakikayabol	=	(int) $dakikayabol;
    
    $Artandakika	=	$number % "60";			// + dakika
    $Artandakika    =	(int) $Artandakika;
    
    $saatbol		=	$dakikayabol / "24";	//Toplam Gün
    $saatbol		=	(int) $saatbol;
    
    $Artansaat		=	$dakikayabol % "24";	// + saat
    $Artansaat		=	(int) $Artansaat;
    
    $yilbul			=	$saatbol / "365";		//Yıl bulur
    $yilbul			=	(int) $yilbul	;			
    
    $Artangun		=	$saatbol % "365";		// + gün
    $Artangun		=	(int) $Artangun;
    
    $artikgun		=	"1";					// Artık gün
    $ay 			=	"0";	
    	
    if($yilbul >= "4"){
    	
    if($yilbul % 4 == 0 ){
    
    	$artikgun	=	($yilbul / "4") - "1" ;	
    	$artikgun	=	(int) $artikgun ;
    
    	}else{
    
    	$artikgun	=	($yilbul / "4")  ;	
    	$artikgun	=	(int) $artikgun ;
    
    	}
    	$Artangun	=	$Artangun - $artikgun;
    	
    	if(($yilbul % "4") == "0" ){			// 2000-2004-2008 gibi artık günü olan yıllarsa
    		if		( $Artangun <= "31" )						{ 	$ay	=	"01" ;   }
    		else if ( "31" < $Artangun && $Artangun <= "60" )	{	$ay	=	"02" ;		$Artangun 	=	$Artangun - "31";}
    		else if ( "60" < $Artangun && $Artangun <= "91" )	{	$ay	=	"03" ;		$Artangun 	=	$Artangun - "60";}
    		else if ( "91" < $Artangun && $Artangun <= "121" )	{	$ay	=	"04" ;		$Artangun 	=	$Artangun - "91";}
    		else if ( "121" < $Artangun && $Artangun <= "152" )	{	$ay	=	"05" ;		$Artangun 	=	$Artangun - "121";}
    		else if ( "152" < $Artangun && $Artangun <= "182" )	{	$ay	=	"06" ;		$Artangun 	=	$Artangun - "152";}
    		else if ( "182" < $Artangun && $Artangun <= "213" )	{	$ay	=	"07" ;		$Artangun 	=	$Artangun - "182";}
    		else if ( "213" < $Artangun && $Artangun <= "244" )	{	$ay	=	"08" ;		$Artangun 	=	$Artangun - "213";}
    		else if ( "244" < $Artangun && $Artangun <= "274" )	{	$ay	=	"09" ;		$Artangun 	=	$Artangun - "244";}
    		else if ( "274" < $Artangun && $Artangun <= "305" )	{	$ay	=	"10" ;		$Artangun 	=	$Artangun - "274";}
    		else if ( "305" < $Artangun && $Artangun <= "335" )	{	$ay	=	"11" ;		$Artangun 	=	$Artangun - "305";}
    		else if ( "335" < $Artangun && $Artangun <= "366" )	{	$ay	=	"12" ;		$Artangun 	=	$Artangun - "335";}
    	} else { 								// değilse
    		if		( $Artangun <= "31" )						{ 	$ay	=	"01" ;    }								
    		else if ( "31" < $Artangun && $Artangun <= "59" )	{	$ay	=	"02" ;		$Artangun 	=	$Artangun - "31";}
    		else if ( "59" < $Artangun && $Artangun <= "91" )	{	$ay	=	"03" ;		$Artangun 	=	$Artangun - "59";}
    		else if ( "90" < $Artangun && $Artangun <= "121" )	{	$ay	=	"04" ;		$Artangun 	=	$Artangun - "90";}
    		else if ( "120" < $Artangun && $Artangun <= "152" )	{	$ay	=	"05" ;		$Artangun 	=	$Artangun - "120";}
    		else if ( "151" < $Artangun && $Artangun <= "182" )	{	$ay	=	"06" ;		$Artangun 	=	$Artangun - "151";}
    		else if ( "181" < $Artangun && $Artangun <= "213" )	{	$ay	=	"07" ;		$Artangun 	=	$Artangun - "181";}
    		else if ( "212" < $Artangun && $Artangun <= "244" )	{	$ay	=	"08" ;		$Artangun 	=	$Artangun - "212";}
    		else if ( "243" < $Artangun && $Artangun <= "274" )	{	$ay	=	"09" ;		$Artangun 	=	$Artangun - "243";}
    		else if ( "273" < $Artangun && $Artangun <= "305" )	{	$ay	=	"10" ;		$Artangun 	=	$Artangun - "273";}
    		else if ( "304" < $Artangun && $Artangun <= "335" )	{	$ay	=	"11" ;		$Artangun 	=	$Artangun - "304";}
    		else if ( "334" < $Artangun && $Artangun <= "366" )	{	$ay	=	"12" ;		$Artangun 	=	$Artangun - "334";}
    		}
    	}
    
    	if($ay == 1 || $ay == 2 || $ay == 3 || $ay == 4 || $ay == 5 || $ay == 6 || $ay == 7 ||$ay == 8 || $ay == 9 || $ay == 0 ){ $ay	=	(string) $ay;}
    	if($Artangun == 1 || $Artangun == 2 || $Artangun == 3 || $Artangun == 4 || $Artangun == 5 || $Artangun == 6 || $$Artangun == 7 ||$Artangun == 8 || $Artangun == 9 || $Artangun == 0 ){ $Artangun	=	(string) "0".$Artangun;}
    	if($Artansaat == 1 || $Artansaat == 2 || $Artansaat == 3 || $Artansaat == 4 || $Artansaat == 5 || $Artansaat == 6 || $Artansaat == 7 ||$Artansaat == 8 || $Artansaat == 9 || $Artansaat == 0 ){ $Artansaat	=	(string) "0".$Artansaat;}
    	if($Artandakika == 1 || $Artandakika == 2 || $Artandakika == 3 || $Artandakika == 4 || $Artandakika == 5 || $Artandakika == 6 || $Artandakika == 7 ||$Artandakika == 8 || $Artandakika == 9 || $Artandakika == 0 ){ $$Artandakika	=	(string) "0".$Artandakika;}
    	
    	 $tarih	=	"20".$yilbul."-".$ay."-".$Artangun." ".$Artansaat.":".$Artandakika.":00";
    
    	 return $tarih;
    
    
    }
    Yazdığım programı uzun süredir test ediyorum tek bir problemi var hala çözemediğim. Normalde ayın son günü (Temmuzu örnek veriyorum) 31.07.2017 den sonra 01.08.2017 olması lazımken programımda 32.07.2017 oluyor ertesi gün düzeliyor ve 02.08.2017 olarak devam ediyor. Her ay sonu 1 gün ekliyor üstüne. Bunun nedeni ne olabilir, birde bu yapacağım işlemi daha kolay ve kesin bir yöntemle çözebilir miyim?
    echo time();
    yukarıdaki fonksiyon 1 Ocak 1970 - 00:00:00 tarihinden bu yana geçen saniyeyi verir.
    echo strtotime("01/01/2000 00:00:00");
    ikinci fonksiyon da 1 Ocak 2000 - 00:00:00 tarihindeki time() sonucunu verir. Bu da 946681200 sonucunu verir.

    Siz 2000 yılından itibaren başlayan sayacı gerçek zamana çevirmek istediğinize göre;

    mesela gerçek zamana çevirmek istediğiniz sayı 545457 olsun, bu sayının üzerine ikinci fonksiyonun sonucu olan 946681200 sayısını eklerseniz bu aynı tarihin 1970 ten başlanarak sayılmış sonucunu verecektir. Yani sonuç 947226657 olacaktır.

    Bu sayıyı da şu şekilde gerçek zamana çevirebilirsiniz.

    echo date("Y-m-d H:i:s", 947226657);
    Yani sonuç şudur.
    ------------------------
    -2000 yılından sonra geçen saniye (gerçek zamana çevirmek istediğimiz) = 5487663

    -1970 ten 2000 e kadar geçen saniye (her zaman sabit)= 946681200

    -İkisini toplarız.
    5487663 + 946681200 = 952168863

    -1970 ten sonra geçen saniyeyi bulduk = 952168863

    -Bu değeri de date fonksiyonu ile gerçek zamana çevirelim.
    echo date("Y-m-d H:i:s", 952168863);
    //("Y-m-d H:i:s") yerine istediğimiz tarih formatını kullanabiliriz. Yalnızca php nin tarih bastırma harflerini bilmek yeterli.
    Kolay gelsin.
  • 29-08-2017, 16:17:50
    #3
    mpoy8 adlı üyeden alıntı: mesajı görüntüle
    echo time();
    yukarıdaki fonksiyon 1 Ocak 1970 - 00:00:00 tarihinden bu yana geçen saniyeyi verir.
    echo strtotime("01/01/2000 00:00:00");
    ikinci fonksiyon da 1 Ocak 2000 - 00:00:00 tarihindeki time() sonucunu verir. Bu da 946681200 sonucunu verir.

    Siz 2000 yılından itibaren başlayan sayacı gerçek zamana çevirmek istediğinize göre;

    mesela gerçek zamana çevirmek istediğiniz sayı 545457 olsun, bu sayının üzerine ikinci fonksiyonun sonucu olan 946681200 sayısını eklerseniz bu aynı tarihin 1970 ten başlanarak sayılmış sonucunu verecektir. Yani sonuç 947226657 olacaktır.

    Bu sayıyı da şu şekilde gerçek zamana çevirebilirsiniz.

    echo date("Y-m-d H:i:s", 947226657);
    Yani sonuç şudur.
    ------------------------
    -2000 yılından sonra geçen saniye (gerçek zamana çevirmek istediğimiz) = 5487663

    -1970 ten 2000 e kadar geçen saniye (her zaman sabit)= 946681200

    -İkisini toplarız.
    5487663 + 946681200 = 952168863

    -1970 ten sonra geçen saniyeyi bulduk = 952168863

    -Bu değeri de date fonksiyonu ile gerçek zamana çevirelim.
    echo date("Y-m-d H:i:s", 952168863);
    //("Y-m-d H:i:s") yerine istediğimiz tarih formatını kullanabiliriz. Yalnızca php nin tarih bastırma harflerini bilmek yeterli.
    Kolay gelsin.
    Hocam kaç satır kodu 2 satır yaptırdınız valla çok teşekkürler.
    Tekniği bilmeyince boşuna uğraşmış oluyoruz işte