cara baca varchar date excel

hi agan2

gmn sih cara baca varchar date excel di yii ?

jadi ana punya field tanggal yang tipenya varchar dan diisi nilai varchar dari date di excel. misal angka ini 38872.5377571528 kalau kita converrt di excel ke date jadinya 6/4/2006 tapi data di mysql = 38872.5377571528.

berikut kode view di _view.php




	<b><?php echo CHtml::encode($data->getAttributeLabel('tanggalinput')); ?>:</b>

	<?php echo CHtml::encode($data->tanggalinput); ?>

	<br />



ana udah coba pake strtotim, date, str_to_date ga ada yang bisa gan.

tulongin donk :)

mgkin bisa coba pakai rumus ini?


function xl2timestamp($xl_date)

{

$timestamp = ($xl - 25569) * 86400;

return $timestamp;

}

makasih jawabannya gan,

solusi ini udah ana coba dan tak berhasil.

jadi solusinya begini :

  • tambahkan kelas ini di folder components



	<?php

    //Only Microsoft would do something this stupid:

    class ExcelDate{

			public static function excel_date($serial){

				

				// Excel/Lotus 123 have a bug with 29-02-1900. 1900 is not a

				// leap year, but Excel/Lotus 123 think it is...

				if ($serial == 60) {

					$day = 29;

					$month = 2;

					$year = 1900;

					

					return sprintf('%02d/%02d/%04d', $month, $day, $year);

				}

				else if ($serial < 60) {

					// Because of the 29-02-1900 bug, any serial date 

					// under 60 is one off... Compensate.

					$serial++;

				}

				

				// Modified Julian to DMY calculation with an addition of 2415019

				$l = $serial + 68569 + 2415019;

				$n = floor(( 4 * $l ) / 146097);

				$l = $l - floor(( 146097 * $n + 3 ) / 4);

				$i = floor(( 4000 * ( $l + 1 ) ) / 1461001);

				$l = $l - floor(( 1461 * $i ) / 4) + 31;

				$j = floor(( 80 * $l ) / 2447);

				$day = $l - floor(( 2447 * $j ) / 80);

				$l = floor($j / 11);

				$month = $j + 2 - ( 12 * $l );

				$year = 100 * ( $n - 49 ) + $i + $l;

				return sprintf('%02d/%02d/%04d', $month, $day, $year);

			}

	}

?>



lalu access dari _view.php dengan cara ExcelDate::excel_date(38872.5377571528) maka hasilnya akan jadi tanggal.

sepertinya ana salah tanya, ini bukan masalah yii tapi masalah php baca serial excel date :)

maklum newbie gan. hhahhaa…

OK Problem solved. Anyway, thanks everybody !

Sep2… baguslah kalau udah solved :)

gan, ane bingung nih, cara bacanya di gridview gimana ya ?

nampilin sih bisa kalau divaluenya, tapi untuk searchnya gimana ya ?

ini kode ane di view admin.php:




array(

                    'name'=>'cchbegin',

                    'value'=>'ExcelDate::excel_date($data->cchbegin)',

                ),

ini kode di modelnya :




$criteria->compare('cchbegin',$this->cchbegin,true);



gimana caranya supaya yang dicompare itu tanggalnya bukan valuenya ?

pusing ana ngerjain proyek yang data sebelumnya diisi serial date excel. hhahaha

bantu ya gan.

thanks

ane gak yakin, tapi kalau pakai cara begini di search() jalan gak?


$criteria->compare('cchbegin',ExcelDate::excel_date($this->cchbegin),true);