ad2002
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 115
ออฟไลน์
กระทู้: 1,289
|
 |
« เมื่อ: 16 มิถุนายน 2014, 16:41:48 » |
|
ถามเซียนPHPหน่อยครับ ต้องการลบวันที่จาก รูปแบบ"19 มิ.ย. 2557"ลบด้วย "16 มิถุนายน 2557" ทำยังไงครับ?
เพิ่มเติม.. ถ้ามีค่าน้อยกว่า1วัน จะไม่ให้จอง ถ้ามีค่ามากกว่า 1วัน ให้จองได้
ขอบคุณครับ
|
|
|
บันทึกการเข้า
|
|
|
|
saparee
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 319
ออฟไลน์
กระทู้: 1,923
|
 |
« ตอบ #1 เมื่อ: 16 มิถุนายน 2014, 16:49:38 » |
|
ลองศึกษาฟังก์ชั่น date_driff() ดูครับ http://www.w3schools.com/php/func_date_date_diff.asp  <?php $date1=date_create("2013-03-15"); $date2=date_create("2013-12-12"); $diff=date_diff($date1,$date2); ?> แนะนำให้เอา date ที่ก่อนจะถูกแปลงเป็น พ.ศ.ไทย ไปคำนวนก่อนครับ แล้วจากนั้นค่อยมา convert เป็น ไทย จะทำให้ทำงานง่ายกว่านะครับ ^ ^
|
|
|
บันทึกการเข้า
|
|
|
|
kameleo
Newbie
พลังน้ำใจ: 10
ออฟไลน์
กระทู้: 63
|
 |
« ตอบ #2 เมื่อ: 16 มิถุนายน 2014, 16:51:17 » |
|
ให้วิธีคิดแล้วกัน ลองเขียนดูนะ 1. แปลงวันปัจจุบันกับวันที่จอง จาก String ให้เป็น Timestamp ก่อน 2. เอาวันปัจจุบันลบด้วยวันที่จอง จะได้ค่า Time Elapsed ในรูป Timestamp 3. Time Elapsed ที่ได้ต้องไม่ติดลบ (ถ้าติดลบคือ Error เพราะจองจากวันในอนาคตไม่ได้) 4. มาเช็คว่า Time Elapsed น้อยกว่า 86400 วินาที (1 วัน) ไหม ถ้าน้อยกว่า ให้ Return False ถ้ามากกว่า ให้ Return True ประมาณนี้
|
|
« แก้ไขครั้งสุดท้าย: 16 มิถุนายน 2014, 16:51:50 โดย kameleo »
|
บันทึกการเข้า
|
|
|
|
xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 493
ออฟไลน์
กระทู้: 5,905
|
 |
« ตอบ #3 เมื่อ: 16 มิถุนายน 2014, 17:45:56 » |
|
เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ
|
|
|
บันทึกการเข้า
|
|
|
|
|
ยิ้มโค้ด.คอม
สมุนแก๊งเสียว
พลังน้ำใจ: 84
ออฟไลน์
กระทู้: 728
|
 |
« ตอบ #5 เมื่อ: 16 มิถุนายน 2014, 18:24:03 » |
|
เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ
ตามนี้เลยครับ แต่ถ้าเก็บเป็นไทยใน db ไว้แล้วอันนี้คงต้องเขียนฟังก์ชั่นแปลงกันยากหน่อยครับ 
|
|
|
บันทึกการเข้า
|
|
|
|
jirawats
ก๊วนเสียว
พลังน้ำใจ: 12
ออฟไลน์
กระทู้: 210
|
 |
« ตอบ #6 เมื่อ: 16 มิถุนายน 2014, 18:49:38 » |
|
ถ้าเป็นผม ก็แปลงเป็น timestamp ก่อนครับ ค่อยเอามาลบกัน แล้วก็แปลงกลับ
|
|
|
บันทึกการเข้า
|
|
|
|
ad2002
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 115
ออฟไลน์
กระทู้: 1,289
|
 |
« ตอบ #7 เมื่อ: 16 มิถุนายน 2014, 19:58:16 » |
|
เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ
ข้อมูลในDatabaseเก็บเป็นไทย ตั้งแต่แรกเลยครับ งานหินยิ่งขึ้น และปฏิทิน ก็เป็นแบบเก่า พอคลิกแล้ว จะเป็นแบบภาษาไทยตามแบบตัวอย่างเลยครับ 
|
|
|
บันทึกการเข้า
|
|
|
|
ad2002
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 115
ออฟไลน์
กระทู้: 1,289
|
 |
« ตอบ #8 เมื่อ: 16 มิถุนายน 2014, 19:59:18 » |
|
ให้วิธีคิดแล้วกัน ลองเขียนดูนะ 1. แปลงวันปัจจุบันกับวันที่จอง จาก String ให้เป็น Timestamp ก่อน 2. เอาวันปัจจุบันลบด้วยวันที่จอง จะได้ค่า Time Elapsed ในรูป Timestamp 3. Time Elapsed ที่ได้ต้องไม่ติดลบ (ถ้าติดลบคือ Error เพราะจองจากวันในอนาคตไม่ได้) 4. มาเช็คว่า Time Elapsed น้อยกว่า 86400 วินาที (1 วัน) ไหม ถ้าน้อยกว่า ให้ Return False ถ้ามากกว่า ให้ Return True ประมาณนี้
พี่เก่งจัง  ขอบคุณครับ เดี๋ยวลองตามนี้ดูก่อน ว่าได้ไหม เพราะว่ารูปแบบในฐานข้อมูล เป็นภาษาไทย แบบนี้เลย จึงต้องแปลงกันหลายขั้นตอน จนงง 
|
|
|
บันทึกการเข้า
|
|
|
|
Hikkyz
คนรักเสียว
พลังน้ำใจ: 4
ออฟไลน์
กระทู้: 173
|
 |
« ตอบ #9 เมื่อ: 16 มิถุนายน 2014, 20:00:50 » |
|
วิธีง่ายๆก็แปลงเป็น Timestamp ให้ได้ก่อน แล้วมันจะลบกันได้ง่ายขึ้น พอลบกันแล้วก็เอาผลลัพธ์มาแปลงกลับ
|
|
|
บันทึกการเข้า
|
|
|
|
atcomink
ก๊วนเสียว
พลังน้ำใจ: 13
ออฟไลน์
กระทู้: 313
|
 |
« ตอบ #10 เมื่อ: 16 มิถุนายน 2014, 22:25:57 » |
|
ให้วิธีคิดแล้วกัน ลองเขียนดูนะ 1. แปลงวันปัจจุบันกับวันที่จอง จาก String ให้เป็น Timestamp ก่อน 2. เอาวันปัจจุบันลบด้วยวันที่จอง จะได้ค่า Time Elapsed ในรูป Timestamp 3. Time Elapsed ที่ได้ต้องไม่ติดลบ (ถ้าติดลบคือ Error เพราะจองจากวันในอนาคตไม่ได้) 4. มาเช็คว่า Time Elapsed น้อยกว่า 86400 วินาที (1 วัน) ไหม ถ้าน้อยกว่า ให้ Return False ถ้ามากกว่า ให้ Return True ประมาณนี้
ตามนี้แหละครับ
|
|
|
บันทึกการเข้า
|
|
|
|
Queue
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 106
ออฟไลน์
กระทู้: 4,295
|
 |
« ตอบ #11 เมื่อ: 16 มิถุนายน 2014, 23:11:15 » |
|
เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ
ข้อมูลในDatabaseเก็บเป็นไทย ตั้งแต่แรกเลยครับ งานหินยิ่งขึ้น และปฏิทิน ก็เป็นแบบเก่า พอคลิกแล้ว จะเป็นแบบภาษาไทยตามแบบตัวอย่างเลยครับ  ไม่มีใครเขาทำกันหรอกครับ เก็บวันที่เป็น ภาษาไทยใน db ผมคนหนึ่งละไม่ทำแบบนั้น
|
|
|
บันทึกการเข้า
|
|
|
|
verture
ก๊วนเสียว
พลังน้ำใจ: 7
ออฟไลน์
กระทู้: 343
|
 |
« ตอบ #12 เมื่อ: 18 มิถุนายน 2014, 15:05:28 » |
|
กระบวนการเยอะจัง  ผมคิดไว้ 2 ทางเลือก คือ 1.ทำใหม่ให้เป็นภาษาอังกฤษแต่แรก เพื่อคิวรีลงฐานข้อมูลให้เป็นอังกฤษ 2.พอดึงข้อมูลออกมาจากฐานข้อมูลแล้ว เขียนฟังชันแปลงให้เป็นอังกฤษ
|
|
« แก้ไขครั้งสุดท้าย: 18 มิถุนายน 2014, 15:09:34 โดย verture »
|
บันทึกการเข้า
|
|
|
|
ยิ้มโค้ด.คอม
สมุนแก๊งเสียว
พลังน้ำใจ: 84
ออฟไลน์
กระทู้: 728
|
 |
« ตอบ #13 เมื่อ: 18 มิถุนายน 2014, 15:10:12 » |
|
ถ้าเก็บเป็นภาษาไทยจริงๆ แนะนำว่าอันดับแรกต้อง convert ข้อมูลให้เก็บเป็น timestamp หรือไม่ก็รูปแบบ date/time ก่อนน่ะครับ โดยเขียนฟังก์ชั่นแปลงข้อมูลวันที่ภาษาไทยให้เป็นรูปแบบที่ต้องการก่อน เพราะถ้าหากยังเก็บเป็นภาษาไทยมันใช้งานยากครับโดยเฉพาะหากจะคำนวนวันที่แล้วถ้าเขียนไม่ดีจริงอาจมีข้อผิดผิดพลาดได้เลย 
|
|
|
บันทึกการเข้า
|
|
|
|
chhopster
สมุนแก๊งเสียว
พลังน้ำใจ: 29
ออฟไลน์
กระทู้: 514
|
 |
« ตอบ #14 เมื่อ: 18 มิถุนายน 2014, 15:17:30 » |
|
ลองศึกษาฟังก์ชั่น date_driff() ดูครับ http://www.w3schools.com/php/func_date_date_diff.asp  <?php $date1=date_create("2013-03-15"); $date2=date_create("2013-12-12"); $diff=date_diff($date1,$date2); ?> แนะนำให้เอา date ที่ก่อนจะถูกแปลงเป็น พ.ศ.ไทย ไปคำนวนก่อนครับ แล้วจากนั้นค่อยมา convert เป็น ไทย จะทำให้ทำงานง่ายกว่านะครับ ^ ^ จบตั้งแต่ฟังชั่นนี้ละ ไม่ต้องแปลงให้ยุ่งยากหรอก
|
|
|
บันทึกการเข้า
|
|
|
|
dekmv
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 222
ออฟไลน์
กระทู้: 3,264
|
 |
« ตอบ #15 เมื่อ: 18 มิถุนายน 2014, 15:37:48 » |
|
ลองศึกษาฟังก์ชั่น date_driff() ดูครับ http://www.w3schools.com/php/func_date_date_diff.asp  <?php $date1=date_create("2013-03-15"); $date2=date_create("2013-12-12"); $diff=date_diff($date1,$date2); ?> แนะนำให้เอา date ที่ก่อนจะถูกแปลงเป็น พ.ศ.ไทย ไปคำนวนก่อนครับ แล้วจากนั้นค่อยมา convert เป็น ไทย จะทำให้ทำงานง่ายกว่านะครับ ^ ^ ใช้แบบนี้เหมือนกันครับผม 
|
|
|
บันทึกการเข้า
|
|
|
|
gd_ab
ก๊วนเสียว
พลังน้ำใจ: 27
ออฟไลน์
กระทู้: 353
|
 |
« ตอบ #16 เมื่อ: 18 มิถุนายน 2014, 19:27:34 » |
|
ตามนั้นครับ ถ้าไม่ใช้ date_diff ก็แปลงเป็น timestamp ก่อนครับ
|
|
|
บันทึกการเข้า
|
|
|
|
|