Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > ถามเรื่องการวนลูป ครับ ผมต้องการจะวนลูป ให้มันแสดงวันที่ ตั้งแต่ วันที่ 25 ถึง วันที่ 2 ทำยังไงครับ



 

ถามเรื่องการวนลูป ครับ ผมต้องการจะวนลูป ให้มันแสดงวันที่ ตั้งแต่ วันที่ 25 ถึง วันที่ 2 ทำยังไงครับ

 



Topic : 033964



โพสกระทู้ ( 11 )
บทความ ( 0 )



สถานะออฟไลน์




ผมมีวันที่ 2 วัน คือ 25-01-2552 กับ 02-02-2552

ผมต้องการจะวนลูป ให้มันแสดงวันที่ ตั้งแต่ วันที่ 25 ถึง วันที่ 2 ทำยังไงครับ

เป็น PHP หรือ JAVASCRIPT ก้อได้ครับ

ขอบคุณครับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-11-06 14:51:48 By : versaa View : 1826 Reply : 1
 

 

No. 1



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

เอาคลาส เก่าที่ผมเขียนไปใช้นะ ผมว่าจะเขียนใหม่ แต่ยังไม่มีความจำเป็นเร่งด่วน

ว่าจะเขียนใหม่ เพราะเมธอด มันเยอะเกินไป และมีที่ไม่จำเป็นเยอะ แถมฟีเจอร์ยังไม่สมบูรณ์

เอาตัวนี้ไปก่อนละกัน

Code (PHP)
// Author Tawatchai Wongtom(http://gunner.freetzi.com)

class DateUtil{

	const DATE = 1;
	const DATETIME = 2;
	const TIMESTAMP = 3;
	
	const FULLDATE = 1;
	const SHORTDATE = 2;
	
	public $year, $month, $day, $hour, $minute, $second;
	private $thai_full_months = array('01'=> 'มกราคม', '02'=> 'กุมภาพันธ์', '03'=> 'มีนาคม', '04'=> 'เมษายน', '05'=> 'พฤษภาคม', '06'=> 'มิถินายน', '07'=> 'กรกฎาคม', '08'=> 'สิงหาคม', '09'=> 'กันยายน', '10'=> 'ตุลาคม', '11'=> 'พฤษจิกายน', '12'=> 'ธันวาคม');
	private $thai_short_months = array('01'=> 'ม.ค.', '02'=> 'ก.พ.', '03'=> 'มี.ค.', '04'=> 'เม.ย.', '05'=> 'พ.ค.', '06'=> 'มิ.ย.', '07'=> 'ก.ค.', '08'=> 'ส.ค.', '09'=> 'ก.ย.', '10'=> 'ต.ค.', '11'=> 'พ.ย.', '12'=> 'ธ.ค.');
	
	public function __construct($year, $month, $day, $hour= '00', $minute= '00', $second= '00'){
		$this->year = $year;
		$this->month = $month;
		$this->day = $day;
		$this->hour = $hour;
		$this->minute = $minute;
		$this->second = $second;
	}
	
	//create and return DateUtil object, $type will be (date, datetime, timestamp), "now" is ok
	//$str parameter format is only "Y-m-d" or "Y/m/d". If you want other format you should use "Constructor" instead.
	public static function create($str, $type= self::DATE){
		if($str == 'now')
			return new DateUtil( date('Y'), date('m'), date('d'), date('H'), date('i'), date('s') );
		
		$hour = '00'; $minute = '00'; $second = '00';
		
		if($type == self::DATE){
			list($year, $month, $day) = preg_split('/[-\/]/', $str);
		}else if($type == self::DATETIME){
			list($date, $time) = preg_split('/\s/', $str);
			list($year, $month, $day) = preg_split('/[-\/]/', $date);
			list($hour, $minute, $second) = preg_split('/:/', $time);
		}else if($type == self::TIMESTAMP){
			$timestamp = (int)$str;
			
			$year = date('Y', $timestamp);
			$month = date('m', $timestamp);
			$day = date('d', $timestamp);
			$hour = date('H', $timestamp);
			$minute = date('i', $timestamp);
			$second = date('s', $timestamp);
		}
		$month = substr('00'.$month, -2);
		$day = substr('00'.$day, -2);
		
		return new DateUtil($year, $month, $day, $hour, $minute, $second);
	}// getDateUtil();
	
	//return length between date as day absolute
	public function dateDiff(DateUtil $date_compare){
		$one_day_timestamp = 24*60*60;
		return ceil( ($this->toTimestamp() - $date_compare->toTimestamp()) / $one_day_timestamp );
	}
	
	//format Y-m-d
	public function toDate(){
		return sprintf('%s-%s-%s', $this->year, $this->month, $this->day);
	}
	
	//format Y-m-d H:i:s
	public function toDateTime(){
		return sprintf('%s-%s-%s %s:%s:%s', $this->year, $this->month, $this->day, $this->hour, $this->minute, $this->second);
	}
	
	//return int Unix timestamp
	public function toTimestamp(){
		return mktime((int)$this->hour, (int)$this->minute, (int)$this->second, (int)$this->month, (int)$this->day, (int)$this->year);
	}
	
	public function toMySQLDate(){
		return addslashes($this->toDate());
	}
	
	public function toMySQLDateTime(){
		return addslashes($this->toDateTime());
	}
	
	public function toMySQLTimestamp(){
		return (string)$this->toTimeStamp();
	}
	
	//for insert to MySQL database with difference format
	public function toMySQLFormat($type= self::DATE){
		if($type == self::DATE)
			return $this->toMySQLDate();
		else if($type == self::DATETIME)
			return $this->toMySQLDateTime();
		else if($type == self::TIMESTAMP)
			return $this->toMySQLTimestamp();
	}
	
	//Thai date, format d m Y
	public function toThaiDate($type= self::FULLDATE){
		$year = $this->year + 543;
		$month = ($type == self::FULLDATE) ? $this->thai_full_months[$this->month] : $this->thai_short_months[$this->month];
		
		return sprintf('%d %s %s', $this->day, $month, $year);
	}
	
	//Eng date, format Y-m-d
	public function toEngDate($type= self::FULLDATE){
		$month_format = ($type == self::FULLDATE) ? 'F' : 'M';
		$timestamp = mktime(0, 0, 0, (int)$this->month, (int)$this->day, (int)$this->year);
		$day = (int)$this->day;
		
		if( $type == self::FULLDATE ){
			switch( $day ){
				case 1: $numstr = 'st'; break;
				case 2: $numstr = 'nd'; break;
				case 3: $numstr = 'rd'; break;
				
				default: $numstr = 'th';
			}
			$day = $day.$numstr;
		}
		
		return sprintf('%s %s, %s', date($month_format, $timestamp), $day, $this->year);
	}
	
	//return time format H:i:s
	public function whatsTime(){
		return sprintf('%s:%s:%s', $this->hour, $this->minute, $this->second);
	}
	
	//return new DateUtil instance with add Days
	public function addDay($day){
		$day = (int)$day;
		
		$time_stamp = strtotime('+'.$day.' day', $this->toTimestamp());
		
		return DateUtil::create(date('Y-m-d', $time_stamp));
	}
	
	//return the same as DateUtil#toDateTime
	public function __toString(){
		return $this->toDateTime();
	}
}


// ตัวอย่าง ใช้การใช้งาน
$start_date = DateUtil::create('2009-11-6');
$end_date = DateUtil::create('2009-12-6');

do{
	echo $start_date->toThaiDate(), '<br>';
	
	$start_date = $start_date->addDay(1);
}while($start_date->dateDiff($end_date) != 1);


หมายเหตุ DateUtil::create() รับเฉพาะ Y-m-d หรือ Y/m/d นะครับ และต้องเป็น ค.ศ. ด้วยนะคับ

มันเรื่องมาก เมธอด ก็จำยาก เลย อยากจะเขียนใหม่ แต่ตัวนี้ก็พอใช้ได้






Date : 2009-11-06 16:15:49 By : pjgunner
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ถามเรื่องการวนลูป ครับ ผมต้องการจะวนลูป ให้มันแสดงวันที่ ตั้งแต่ วันที่ 25 ถึง วันที่ 2 ทำยังไงครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่