#ถามเซียนPHP วิธีลบวันที่จาก รูปแบบ"19 มิ.ย. 2557"ลบด้วย "16 มิถุนายน 2557" ?

เริ่มโดย ad2002, 16 มิถุนายน 2014, 16:41:48

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

ad2002

ถามเซียนPHPหน่อยครับ 
ต้องการลบวันที่จาก รูปแบบ"19 มิ.ย. 2557"ลบด้วย "16 มิถุนายน 2557"
ทำยังไงครับ?

เพิ่มเติม..
ถ้ามีค่าน้อยกว่า1วัน จะไม่ให้จอง
ถ้ามีค่ามากกว่า 1วัน  ให้จองได้

ขอบคุณครับ

saparee

ลองศึกษาฟังก์ชั่น 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

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

xvlnw.com

เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ
[direct=https://cloudhost.in.th/wordpress-hosting]ツ ⓌⓄⓇⒹⓅⓇⒺⓈⓈ ⒽⓄⓈⓉⒾⓃⒼ [/direct] :wanwan014:  :D
[direct=https://cloudhost.in.th/cloudhosting.html]Cloud Hosting[/direct] [direct=https://cloudhost.in.th/cloudvps.html]Cloud Server[/direct] [direct=https://cloudhost.in.th/vpshosting.html]Cloud VPS Hosting[/direct] [direct=https://cloudhost.in.th/windowsvps.html]Cloud Windows[/direct] Tel: 080-348-0843 LINE: ixvlnw

zazane

อ้างถึงจาก: kameleo ใน 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 ประมาณนี้
พี่เก่งจัง :-[
วิธีหาเงินที่ง่ายๆ วันละ 350 ผ่านเว็บครอบลิงค์[direct=http://onemore10now.blogspot.com]คลิกเลยค่ะ[/direct]
popup เจ้านี้ สมัครง่าย ทำเงินง่าย[direct=https://www.popads.net/users/refer/519628]ทางนี้[/direct]
โฮสติ้งคุณภาพสูง ราคาถูก มาตรฐาน ISO เจ้าเดียวในไทย
[direct=https://my.thaidatahosting.com/aff.php?aff=227][/direct]
[direct=http://bit.ly/2yY8lhN]pauy[/direct]

ยิ้มโค้ด.คอม

อ้างถึงจาก: xvlnw.com ใน 16 มิถุนายน 2014, 17:45:56
เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ

ตามนี้เลยครับ แต่ถ้าเก็บเป็นไทยใน db ไว้แล้วอันนี้คงต้องเขียนฟังก์ชั่นแปลงกันยากหน่อยครับ  :P

jirawats

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

ad2002

อ้างถึงจาก: xvlnw.com ใน 16 มิถุนายน 2014, 17:45:56
เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ

ข้อมูลในDatabaseเก็บเป็นไทย ตั้งแต่แรกเลยครับ  งานหินยิ่งขึ้น
และปฏิทิน ก็เป็นแบบเก่า พอคลิกแล้ว จะเป็นแบบภาษาไทยตามแบบตัวอย่างเลยครับ 
:P

ad2002

อ้างถึงจาก: zazane ใน 16 มิถุนายน 2014, 17:52:40
อ้างถึงจาก: kameleo ใน 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 ประมาณนี้
พี่เก่งจัง :-[

ขอบคุณครับ  เดี๋ยวลองตามนี้ดูก่อน  ว่าได้ไหม
เพราะว่ารูปแบบในฐานข้อมูล  เป็นภาษาไทย แบบนี้เลย  จึงต้องแปลงกันหลายขั้นตอน จนงง
:P

Hikkyz

วิธีง่ายๆก็แปลงเป็น Timestamp ให้ได้ก่อน แล้วมันจะลบกันได้ง่ายขึ้น พอลบกันแล้วก็เอาผลลัพธ์มาแปลงกลับ
[direct=http://automoblex.com]ข่าวรถยนต์ใหม่ 2014[/direct] [direct=http://automoblex.com/category/honda/honda-jazz/]Honda Jazz 2014[/direct] [direct=http://www.thaihondacityclub.com]City 2014[/direct] [direct=http://www.allnewjazzclub.com]Jazz 2014[/direct]

atcomink

อ้างถึงจาก: kameleo ใน 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 ประมาณนี้


ตามนี้แหละครับ
เว็บไซต์ในเครือ
[direct=https://www.kruaof.com] เว็บครูออฟ [/direct]
[direct=https://www.thaitestonline.com] ไทยเทสออนไลน์ [/direct]
[direct=https://youtube.com/c/STANDINGTEACHER] YouTube : ครูออฟสอนคอมพิวเตอร์ [/direct]

Queue

อ้างถึงจาก: ad2002 ใน 16 มิถุนายน 2014, 19:58:16
อ้างถึงจาก: xvlnw.com ใน 16 มิถุนายน 2014, 17:45:56
เอาข้อมูลที่ก่อนจะทำเป็นไทยมาใช้ครับ แต่ถ้าเก็บข้อมูลเป็นไทยตั้งแต่แรก มันจะเป็นการเก็บข้อมูลที่ผิดพลาดมากๆครับ

ข้อมูลในDatabaseเก็บเป็นไทย ตั้งแต่แรกเลยครับ  งานหินยิ่งขึ้น
และปฏิทิน ก็เป็นแบบเก่า พอคลิกแล้ว จะเป็นแบบภาษาไทยตามแบบตัวอย่างเลยครับ 
:P


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

ผมคนหนึ่งละไม่ทำแบบนั้น

verture

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

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

1.ทำใหม่ให้เป็นภาษาอังกฤษแต่แรก เพื่อคิวรีลงฐานข้อมูลให้เป็นอังกฤษ
2.พอดึงข้อมูลออกมาจากฐานข้อมูลแล้ว เขียนฟังชันแปลงให้เป็นอังกฤษ

ยิ้มโค้ด.คอม

ถ้าเก็บเป็นภาษาไทยจริงๆ แนะนำว่าอันดับแรกต้อง convert ข้อมูลให้เก็บเป็น timestamp หรือไม่ก็รูปแบบ date/time ก่อนน่ะครับ โดยเขียนฟังก์ชั่นแปลงข้อมูลวันที่ภาษาไทยให้เป็นรูปแบบที่ต้องการก่อน เพราะถ้าหากยังเก็บเป็นภาษาไทยมันใช้งานยากครับโดยเฉพาะหากจะคำนวนวันที่แล้วถ้าเขียนไม่ดีจริงอาจมีข้อผิดผิดพลาดได้เลย  :P

chhopster

อ้างถึงจาก: saparee ใน 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 เป็น ไทย จะทำให้ทำงานง่ายกว่านะครับ ^ ^

จบตั้งแต่ฟังชั่นนี้ละ ไม่ต้องแปลงให้ยุ่งยากหรอก

dekmv

อ้างถึงจาก: saparee ใน 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 เป็น ไทย จะทำให้ทำงานง่ายกว่านะครับ ^ ^

ใช้แบบนี้เหมือนกันครับผม  :wanwan003:

gd_ab

ตามนั้นครับ
ถ้าไม่ใช้ date_diff ก็แปลงเป็น timestamp ก่อนครับ
[direct=http://elvira.co.th/product/เตารีดไอน้ำ-รุ่น-540/]เตารีด เตารีดไอน้ำ[/direct]<br />[direct=http://elvira.co.th/product-category/จักรเย็บผ้าและอุปกรณ์-elvira/จักรเย็บผ้า/]จักรเย็บผ้า[/direct]<br />[direct=http://elvira.co.th]ELVIRA จักรเย็บผ้า เตารีดไอน้ำ เครื่องทำความสะอาดด้วยไอน้ำ เครื่องปั่นความเร็วสูง[/direct]<br />[direct=http://theeravat.com]Blog ส่วนตัวครับ[/direct]