উত্তর:
PHP5.3 প্রয়োজন:
$begin = new DateTime('2010-05-01');
$end = new DateTime('2010-05-10');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach ($period as $dt) {
echo $dt->format("l Y-m-d H:i:s\n");
}
এই ইচ্ছার আউটপুট মধ্যে সংজ্ঞায়িত সময়ের মধ্যে সব দিন $start
এবং $end
। আপনি যদি 10 তম অন্তর্ভুক্ত করতে চান তবে $end
11 তম সেট করুন। আপনি আপনার পছন্দ অনুসারে বিন্যাস সামঞ্জস্য করতে পারেন। ডেটপিয়ারডের জন্য পিএইচপি ম্যানুয়াল দেখুন ।
$begin->setTime(0,0); $end->setTime(12,0);
বা শেষ তারিখের চেয়ে পরে যে কোনও সময় হিসাবে শুরু হওয়ার তারিখের দিনের সাথে সূচনা করে লুপের শেষের তারিখটি অন্তর্ভুক্ত করবে। সর্বাধিক স্টাইলিশ ফিক্স নয়, তবে যতক্ষণ না সঠিক পতাকা নেই ততক্ষণ এটি সর্বোত্তম বিকল্প।
এটিও শেষ তারিখটি অন্তর্ভুক্ত করে
$begin = new DateTime( "2015-07-03" );
$end = new DateTime( "2015-07-09" );
for($i = $begin; $i <= $end; $i->modify('+1 day')){
echo $i->format("Y-m-d");
}
আপনার যদি শেষ তারিখের প্রয়োজন না =
হয় তবে শর্তটি থেকে সরিয়ে দিন ।
$begin
হবে তা নিশ্চিত হয়ে নিন । এই লুপ দ্বারা নির্মিত বস্তুটি পরিবর্তন করে । সুতরাং আপনাকে কেন ডেটটাইমআইএমটিউটেবল সংস্করণগুলি ব্যবহার করা উচিত। তবে এগুলি ব্যবহারের জন্য আপনার আরও কিছু পরিবর্তন প্রয়োজন। new DateTime( "2015-07-03" )
ইউনিক্স টাইমস্ট্যাম্পে রূপান্তরিত করা পিএইচপি তে তারিখের গণিতকে আরও সহজ করে তোলে:
$startTime = strtotime( '2010-05-01 12:00' );
$endTime = strtotime( '2010-05-10 12:00' );
// Loop between timestamps, 24 hours at a time
for ( $i = $startTime; $i <= $endTime; $i = $i + 86400 ) {
$thisDate = date( 'Y-m-d', $i ); // 2010-05-01, 2010-05-02, etc
}
ডিএসটি থাকা টাইমজোন সহ পিএইচপি ব্যবহার করার সময়, এমন কোনও সময় যুক্ত করতে ভুলবেন না যা ২৩:২০, 00:00 বা 1:00 সময় বাদ না দিয়ে বা পুনরাবৃত্তি থেকে রক্ষা করতে।
অন্তর্ভুক্ত ব্যাপ্তির জন্য পিএইচপি.এন.পি. নমুনা থেকে অনুলিপি করুন :
$begin = new DateTime( '2012-08-01' );
$end = new DateTime( '2012-08-31' );
$end = $end->modify( '+1 day' );
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
foreach($daterange as $date){
echo $date->format("Ymd") . "<br>";
}
$startTime = strtotime('2010-05-01');
$endTime = strtotime('2010-05-10');
// Loop between timestamps, 1 day at a time
$i = 1;
do {
$newTime = strtotime('+'.$i++.' days',$startTime);
echo $newTime;
} while ($newTime < $endTime);
অথবা
$startTime = strtotime('2010-05-01');
$endTime = strtotime('2010-05-10');
// Loop between timestamps, 1 day at a time
do {
$startTime = strtotime('+1 day',$startTime);
echo $startTime;
} while ($startTime < $endTime);
এখানে অন্য একটি সহজ -
/**
* Date range
*
* @param $first
* @param $last
* @param string $step
* @param string $format
* @return array
*/
function dateRange( $first, $last, $step = '+1 day', $format = 'Y-m-d' ) {
$dates = [];
$current = strtotime( $first );
$last = strtotime( $last );
while( $current <= $last ) {
$dates[] = date( $format, $current );
$current = strtotime( $step, $current );
}
return $dates;
}
উদাহরণ:
print_r( dateRange( '2010-07-26', '2010-08-05') );
Array (
[0] => 2010-07-26
[1] => 2010-07-27
[2] => 2010-07-28
[3] => 2010-07-29
[4] => 2010-07-30
[5] => 2010-07-31
[6] => 2010-08-01
[7] => 2010-08-02
[8] => 2010-08-03
[9] => 2010-08-04
[10] => 2010-08-05
)
ব্যবহারকারী এই ফাংশন:
function dateRange($first, $last, $step = '+1 day', $format = 'Y-m-d' ) {
$dates = array();
$current = strtotime($first);
$last = strtotime($last);
while( $current <= $last ) {
$dates[] = date($format, $current);
$current = strtotime($step, $current);
}
return $dates;
}
ব্যবহার / ফাংশন কল: -
একদিন বাড়িয়ে দিন: -
dateRange($start, $end); //increment is set to 1 day.
মাস দ্বারা বৃদ্ধি: -
dateRange($start, $end, "+1 month");//increase by one month
আপনি যদি তারিখের ফর্ম্যাট সেট করতে চান তবে তৃতীয় প্যারামিটার ব্যবহার করুন: -
dateRange($start, $end, "+1 month", "Y-m-d H:i:s");//increase by one month and format is mysql datetime
এখানে একটি উপায়:
$date = new Carbon();
$dtStart = $date->startOfMonth();
$dtEnd = $dtStart->copy()->endOfMonth();
$weekendsInMoth = [];
while ($dtStart->diffInDays($dtEnd)) {
if($dtStart->isWeekend()) {
$weekendsInMoth[] = $dtStart->copy();
}
$dtStart->addDay();
}
$ উইকএন্ডের ফলাফলআম্মথ উইকএন্ডের দিনগুলির অ্যারে!
$date = new DateTime($_POST['date']);
$endDate = date_add(new DateTime($_POST['date']),date_interval_create_from_date_string("7 days"));
while ($date <= $endDate) {
print date_format($date,'d-m-Y')." AND END DATE IS : ".date_format($endDate,'d-m-Y')."\n";
date_add($date,date_interval_create_from_date_string("1 days"));
}
আপনি এটির মতো পুনরাবৃত্তি $_POST['date']
করতে পারেন, এটি আপনার অ্যাপ্লিকেশন বা ওয়েবসাইট থেকে আটকানো যেতে পারে পরিবর্তে $_POST['date']
আপনি নিজের স্ট্রিংটি এখানে রাখতে পারেন "21-12-2019"
। দুজনেই কাজ করবে।
আপনি যদি লারাভেল ব্যবহার করেন এবং কার্বনটি ব্যবহার করতে চান তবে সঠিক সমাধানটি নিম্নলিখিত হবে:
$start_date = Carbon::createFromFormat('Y-m-d', '2020-01-01');
$end_date = Carbon::createFromFormat('Y-m-d', '2020-01-31');
$period = new CarbonPeriod($start_date, '1 day', $end_date);
foreach ($period as $dt) {
echo $dt->format("l Y-m-d H:i:s\n");
}
যোগ করতে মনে রাখবেন:
<?php
$start_date = '2015-01-01';
$end_date = '2015-06-30';
while (strtotime($start_date) <= strtotime($end_date)) {
echo "$start_daten";
$start_date = date ("Y-m-d", strtotime("+1 days", strtotime($start_date)));
}
?>