ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming#ถามเซียนPHP วิธีลบวันที่จาก รูปแบบ"19 มิ.ย. 2557"ลบด้วย "16 มิถุนายน 2557" ?
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: #ถามเซียนPHP วิธีลบวันที่จาก รูปแบบ"19 มิ.ย. 2557"ลบด้วย "16 มิถุนายน 2557" ?  (อ่าน 6164 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
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 »

เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ
บันทึกการเข้า

zazane
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 61
ออฟไลน์ ออฟไลน์

กระทู้: 1,582



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 16 มิถุนายน 2014, 17:52:40 »

ให้วิธีคิดแล้วกัน ลองเขียนดูนะ
1. แปลงวันปัจจุบันกับวันที่จอง จาก String ให้เป็น Timestamp ก่อน
2. เอาวันปัจจุบันลบด้วยวันที่จอง จะได้ค่า Time Elapsed ในรูป Timestamp
3. Time Elapsed ที่ได้ต้องไม่ติดลบ (ถ้าติดลบคือ Error เพราะจองจากวันในอนาคตไม่ได้)
4. มาเช็คว่า Time Elapsed น้อยกว่า 86400 วินาที (1 วัน) ไหม ถ้าน้อยกว่า ให้ Return False ถ้ามากกว่า ให้ Return True ประมาณนี้
พี่เก่งจัง Embarrassed
บันทึกการเข้า

วิธีหาเงินที่ง่ายๆ วันละ 350 ผ่านเว็บครอบลิงค์คลิกเลยค่ะ
popup เจ้านี้ สมัครง่าย ทำเงินง่ายทางนี้
 โฮสติ้งคุณภาพสูง ราคาถูก มาตรฐาน ISO เจ้าเดียวในไทย

pauy
ยิ้มโค้ด.คอม
สมุนแก๊งเสียว
*

พลังน้ำใจ: 84
ออฟไลน์ ออฟไลน์

กระทู้: 728



ดูรายละเอียด
« ตอบ #5 เมื่อ: 16 มิถุนายน 2014, 18:24:03 »

เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ

ตามนี้เลยครับ แต่ถ้าเก็บเป็นไทยใน db ไว้แล้วอันนี้คงต้องเขียนฟังก์ชั่นแปลงกันยากหน่อยครับ  Tongue
บันทึกการเข้า
jirawats
ก๊วนเสียว
*

พลังน้ำใจ: 12
ออฟไลน์ ออฟไลน์

กระทู้: 210



ดูรายละเอียด
« ตอบ #6 เมื่อ: 16 มิถุนายน 2014, 18:49:38 »

ถ้าเป็นผม ก็แปลงเป็น timestamp ก่อนครับ ค่อยเอามาลบกัน แล้วก็แปลงกลับ
บันทึกการเข้า

ad2002
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 115
ออฟไลน์ ออฟไลน์

กระทู้: 1,289



ดูรายละเอียด
« ตอบ #7 เมื่อ: 16 มิถุนายน 2014, 19:58:16 »

เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ

ข้อมูลในDatabaseเก็บเป็นไทย ตั้งแต่แรกเลยครับ  งานหินยิ่งขึ้น
และปฏิทิน ก็เป็นแบบเก่า พอคลิกแล้ว จะเป็นแบบภาษาไทยตามแบบตัวอย่างเลยครับ 
 Tongue
บันทึกการเข้า
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 ประมาณนี้
พี่เก่งจัง Embarrassed

ขอบคุณครับ  เดี๋ยวลองตามนี้ดูก่อน  ว่าได้ไหม
เพราะว่ารูปแบบในฐานข้อมูล  เป็นภาษาไทย แบบนี้เลย  จึงต้องแปลงกันหลายขั้นตอน จนงง
 Tongue
บันทึกการเข้า
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เก็บเป็นไทย ตั้งแต่แรกเลยครับ  งานหินยิ่งขึ้น
และปฏิทิน ก็เป็นแบบเก่า พอคลิกแล้ว จะเป็นแบบภาษาไทยตามแบบตัวอย่างเลยครับ 
 Tongue


ไม่มีใครเขาทำกันหรอกครับ เก็บวันที่เป็น ภาษาไทยใน db

ผมคนหนึ่งละไม่ทำแบบนั้น
บันทึกการเข้า

verture
ก๊วนเสียว
*

พลังน้ำใจ: 7
ออฟไลน์ ออฟไลน์

กระทู้: 343



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 18 มิถุนายน 2014, 15:05:28 »

กระบวนการเยอะจัง  Tongue

ผมคิดไว้ 2 ทางเลือก คือ

1.ทำใหม่ให้เป็นภาษาอังกฤษแต่แรก เพื่อคิวรีลงฐานข้อมูลให้เป็นอังกฤษ
2.พอดึงข้อมูลออกมาจากฐานข้อมูลแล้ว เขียนฟังชันแปลงให้เป็นอังกฤษ
« แก้ไขครั้งสุดท้าย: 18 มิถุนายน 2014, 15:09:34 โดย verture » บันทึกการเข้า

ยิ้มโค้ด.คอม
สมุนแก๊งเสียว
*

พลังน้ำใจ: 84
ออฟไลน์ ออฟไลน์

กระทู้: 728



ดูรายละเอียด
« ตอบ #13 เมื่อ: 18 มิถุนายน 2014, 15:10:12 »

ถ้าเก็บเป็นภาษาไทยจริงๆ แนะนำว่าอันดับแรกต้อง convert ข้อมูลให้เก็บเป็น timestamp หรือไม่ก็รูปแบบ date/time ก่อนน่ะครับ โดยเขียนฟังก์ชั่นแปลงข้อมูลวันที่ภาษาไทยให้เป็นรูปแบบที่ต้องการก่อน เพราะถ้าหากยังเก็บเป็นภาษาไทยมันใช้งานยากครับโดยเฉพาะหากจะคำนวนวันที่แล้วถ้าเขียนไม่ดีจริงอาจมีข้อผิดผิดพลาดได้เลย  Tongue
บันทึกการเข้า
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 เป็น ไทย จะทำให้ทำงานง่ายกว่านะครับ ^ ^


ใช้แบบนี้เหมือนกันครับผม  wanwan003
บันทึกการเข้า
gd_ab
ก๊วนเสียว
*

พลังน้ำใจ: 27
ออฟไลน์ ออฟไลน์

กระทู้: 353



ดูรายละเอียด เว็บไซต์
« ตอบ #16 เมื่อ: 18 มิถุนายน 2014, 19:27:34 »

ตามนั้นครับ
ถ้าไม่ใช้ date_diff ก็แปลงเป็น timestamp ก่อนครับ
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์