Menu

Thursday, June 13, 2019

[Laravel - Carbon] ข้อควรระวัง: การใช้ Carbon::today()->toDateString() เพื่อเปรียบเทียบกับ Date String
[Laravel - Carbon] Warning: Using Carbon::today()->toDateString() for Comparing with Date String

Carbon เป็น PHP API extension สำหรับ DateTime

Carbon::today() เป็นฟังก์ชั่นที่ใช้สร้าง Carbon object ที่มีวันที่เป็นวันปัจจุบัน อย่างไรก็ตามในส่วนของเวลาจะเป็น 00:00:00 

จากภาพด้านล่างเป็นผลลัพธ์การเปรียบเทียบระหว่าง Carbon::today() กับวันที่ในรูปแบบข้อความ โดยใช้การเปรียบเทียบข้อความปกติ


ดังนั้นถ้าต้องการเปรียบเทียบเพียงวันที่เท่านั้น ให้เปลี่ยนไปใช้ Carbon::today()->toDateString() แทน

ผลลัพธ์การเปรียบเทียบจะเป็นดังภาพด้านล่าง

2 comments:

  1. จริงๆควร parse string เป็น carbon object ก่อนเปรียบเทียบสิ มาเปรียบเทียบแบบนี้ก็ไม่น่าจะได้ตั้งแต่แรกแล้ว เพราะเราเอา string ไปเปรียบเทียบกับ obj

    ReplyDelete
    Replies
    1. ผมอาจจะเขียนไม่เคลียร์เองครับ ที่ต้องการจะสื่อคือ เวลาที่เราเทียบแบบข้อความ มันจะไปเรียก Carbon::today()->toDateTimeString() ให้ ดูจากผลตามรูปแรกครับ ดังนั้นเวลาจะเทียบแบบข้อความเอาวันที่อย่างเดียว ให้ใช้เป็น Carbon::today()->toDateString() ไปเลยครับ

      Delete