2011-06-30 29 views
1

語言: PHP最新日期到財政年度的PHP代碼中使用

我有一個表格,進入
CNumber
DateFrom
DateTo

在點擊提交,我想要的功能,打破將日期納入財政年度。
EG-INPUT通過以上形式
CNumber:1
DateFrom:12/12/2013
DateTo:31/03/2014

然後(OUTPUT)值在表中插入應該
CNumber:1
DurationFrom:12/12/2011
DurationTo:31/03/2012

CNumber:1
DurationFrom:01/04/2012
DurationTo:31/03/2013

CNumber:1
DurationFrom:2013年1月4日
DurationTo:31/03/2014

希望邏輯是明確的。
我無法編碼上述問題。

感謝您的幫助.. !!

回答

1

你可以使用mktime()函數來達到你的輸出!例如有一個簡單的代碼,但如果你在尋找它更多你可以寫,你想:

list($df_day,$df_month,$df_year) = split('/',$durationFrom); 
list($dt_day,$dt_month,$dt_year) = split('/',$durationTo); 
$newDurationFrom = date("dd/mm/yyyy",mktime(0,0,0,$df_month,$df_day,($df_year+[YOUR VALUE HERE]))); 
$newDurationTo = date("dd/mm/yyyy",mktime(0,0,0,$dt_month,$dt_day,($dt_year-[YOUR VALUE HERE]))); 
0

假設$cNumber$dateFrom$dateTo是被存儲CNumber你的PHP變量,從日期到今天爲止在表格提交後分別進行。

$objDateFrom = new DateTime(str_replace('/', '-', $dateFrom)); // create DateTime object for from-date 
$objDateTo = new DateTime(str_replace('/', '-', $dateTo)); // create DateTime object for to-date 
$fromYear = $objDateFrom->format('Y'); 
$toYear = $objDateTo->format('Y'); 
$fromDate = $objDateFrom->format('Y-m-d'); 
$toDate = $objDateTo->format('Y-m-d'); 

$arrObjDates[] = new DateTime($fromDate); // this array stores DateTime objects for from-date and to-date plus all intermediary dates; by default it always stores from-date as the first element 
for ($i = $fromYear; $i <= $toYear; $i++) { 
    $tmpDate = $i . '-03-31'; 
    if ($i == $fromYear) { // the first iteration 
     if ($fromDate > $tmpDate) { // if from-date is after the FY end date in the same year, skip further loop execution 
      continue; 
     } 
    } 
    if ($i == $toYear) { // the last iteration 
     if ($toDate > $tmpDate) { // if to-date is after the FY end date in the same year, store the FY end date 'yyyy-03-31' 
      $arrObjDates[] = new DateTime($tmpDate); 
     } 
     $arrObjDates[] = new DateTime($toDate); 
    } else { 
     $arrObjDates[] = new DateTime($tmpDate); 
    } 
} 

$qry = ''; 
if (!empty($arrObjDates)) { 
    $qry = 'INSERT INTO `tableA` (`c_number`, `date_from`, `date_to`) VALUES'; 
    for ($idx = 0; $idx < count($arrObjDates) - 1; $idx++) { 
     if ($idx > 0) { 
      $qryFromDate = $arrObjDates[$idx]->format('Y') . '-04-01'; 
     } else { 
      $qryFromDate = $arrObjDates[$idx]->format('Y-m-d'); 
     } 
     $qry .= '(' . $cNumber . ', \'' . $qryFromDate . '\', \'' . $arrObjDates[$idx+1]->format('Y-m-d') . '\'),'; 
    } 
} 
$qry = trim($qry, ','); 

我花了一段時間來編碼,但最後我希望它能夠工作。我沒有試圖簡化代碼,但我確信有這樣做的方法。

+0

在你身上的努力Abhay! 但我無法在PHP文件中實現它。你可以上傳你的上述文件併發布URL嗎? – Techno

+0

謝謝@Techno。我上面的代碼是PHP腳本的唯一代碼;沒有什麼更多的了。你有什麼問題實施它? – Abhay

+0

插入時存在一些問題,而是顯示我的查詢。既然你已經實現了代碼,你能分享一下這個WORKING文件嗎? – Techno

相關問題