Làm cách nào để so sánh hai lần trong PHP?

Mẹo để thao tác và so sánh ngày và giờ trong PHP là lưu trữ các giá trị ngày/giờ trong một biến số nguyên và sử dụng các hàm mktime[], date[] và strtotime[]. Biểu diễn số nguyên của ngày/giờ là số giây kể từ nửa đêm, 1970-Jan-1, được gọi là 'kỷ nguyên'. Khi ngày/giờ của bạn ở dạng số nguyên, bạn sẽ có thể so sánh nó một cách hiệu quả với các ngày khác cũng ở dạng số nguyên

Nội dung chính Hiển thị

Tất nhiên, vì rất có thể bạn sẽ nhận được các giá trị ngày/giờ từ các yêu cầu trang và truy vấn chọn cơ sở dữ liệu nên bạn sẽ cần chuyển đổi chuỗi ngày/giờ của mình thành một số nguyên trước khi có thể thực hiện bất kỳ phép so sánh hoặc số học nào

Giả sử bạn chắc chắn rằng các biến $resttimefrom và $resttimeto chứa thời gian được định dạng đúng, bạn có thể sử dụng hàm strtotime[] để chuyển đổi thời gian chuỗi của bạn thành một số nguyên. strtotime[] lấy một chuỗi có định dạng là ngày tháng và chuyển đổi nó thành số giây kể từ kỷ nguyên

$time_from = strtotime[$resttimefrom];
$time_to = strtotime[$resttimeto];

lưu ý bên lề. strtotime[] luôn trả về ngày đầy đủ ở dạng số nguyên. Nếu chuỗi của bạn không có ngày tháng, chỉ có thời gian, strtotime[] trả về ngày hôm nay cùng với thời gian bạn đã cung cấp trong chuỗi. Tuy nhiên, điều này không quan trọng đối với bạn vì hai ngày được trả về bởi strtotime[] sẽ có cùng một ngày và việc so sánh hai biến sẽ có tác dụng mong muốn là so sánh hai thời điểm khi các ngày triệt tiêu lẫn nhau

Khi bạn so sánh hai số nguyên, hãy nhớ rằng ngày/giờ càng sớm thì giá trị số nguyên của nó sẽ càng nhỏ. Vì vậy, nếu bạn muốn xem liệu $time_from có ​​sớm hơn $time_to hay không, bạn sẽ có cái này

if [$time_from < $time_to]
{
    // $time_from is ealier than $time_to
}

Bây giờ để so sánh ngày/giờ với ngày/giờ hệ thống hiện tại, chỉ cần sử dụng mktime[] không có tham số để biểu thị ngày/giờ hiện tại

if [$time_from < mktime[]]
{
    // $time_from is in the past
}

Mẹo để thao tác và so sánh ngày và giờ trong PHP là lưu trữ các giá trị ngày/giờ trong một biến số nguyên và sử dụng các hàm mktime[], date[] và strtotime[]. Biểu diễn số nguyên của ngày/giờ là số giây kể từ nửa đêm, 1970-Jan-1, được gọi là 'kỷ nguyên'. Khi ngày/giờ của bạn ở dạng số nguyên, bạn sẽ có thể so sánh nó một cách hiệu quả với các ngày khác cũng ở dạng số nguyên

Tất nhiên, vì rất có thể bạn sẽ nhận được các giá trị ngày/giờ từ các yêu cầu trang và truy vấn chọn cơ sở dữ liệu nên bạn sẽ cần chuyển đổi chuỗi ngày/giờ của mình thành một số nguyên trước khi có thể thực hiện bất kỳ phép so sánh hoặc số học nào

Giả sử bạn chắc chắn rằng các biến $resttimefrom và $resttimeto chứa thời gian được định dạng đúng, bạn có thể sử dụng hàm strtotime[] để chuyển đổi thời gian chuỗi của bạn thành một số nguyên. strtotime[] lấy một chuỗi có định dạng là ngày tháng và chuyển đổi nó thành số giây kể từ kỷ nguyên

$time_from = strtotime[$resttimefrom];
$time_to = strtotime[$resttimeto];

lưu ý bên lề. strtotime[] luôn trả về ngày đầy đủ ở dạng số nguyên. Nếu chuỗi của bạn không có ngày tháng, chỉ có thời gian, strtotime[] trả về ngày hôm nay cùng với thời gian bạn đã cung cấp trong chuỗi. Tuy nhiên, điều này không quan trọng đối với bạn vì hai ngày được trả về bởi strtotime[] sẽ có cùng một ngày và việc so sánh hai biến sẽ có tác dụng mong muốn là so sánh hai thời điểm khi các ngày triệt tiêu lẫn nhau

Khi bạn so sánh hai số nguyên, hãy nhớ rằng ngày/giờ càng sớm thì giá trị số nguyên của nó sẽ càng nhỏ. Vì vậy, nếu bạn muốn xem liệu $time_from có ​​sớm hơn $time_to hay không, bạn sẽ có cái này

if [$time_from < $time_to]
{
    // $time_from is ealier than $time_to
}

Bây giờ để so sánh ngày/giờ với ngày/giờ hệ thống hiện tại, chỉ cần sử dụng mktime[] không có tham số để biểu thị ngày/giờ hiện tại

if [$time_from < mktime[]]
{
    // $time_from is in the past
}

1, Giới thiệu

Hôm nay tôi gặp một vấn đề về ngày tháng trong dự án của chúng tôi, theo yêu cầu thì tôi phải xóa tất cả những sản phẩm đã hết hạn trong Cơ sở dữ liệu. Mỗi sản phẩm đều có 2 cột trong DB là start_date và exp_date để lưu ngày đăng ký và ngày hết hạn quảng cáo trên trang web. Cả hai cột đều được lưu với kiểu Ngày

Nội dung chính

  • 1, Giới thiệu
  • 2, Giải pháp
  • 4, Kết luận
  • Sử dụng toán tử so sánh
  • Use function strcmp[]
  • Sử dụng hàm similar_text
  • Use function levenshtein
  • Use function soundex
  • Use metaphone function
  • Người giới thiệu

Sau khi thực hiện câu truy vấn để lấy thông tin ngày hết hạn của từng sản phẩm, tôi sẽ nhận được các giá trị kiểu Ngày [yyyy-mm-dd] dưới dạng chuỗi [chuỗi]. Việc tiếp theo là lấy 1 ngày làm việc để có cơ sở so sánh các ngày với nhau. tôi lấy ngày hôm nay làm việc. Vì vậy, nếu ngày hết hạn trước ngày hôm nay, tôi sẽ xóa sản phẩm đó và đảo ngược lại, sau đó tiếp tục lưu trong Cơ sở dữ liệu

2, Giải pháp

Tôi sử dụng hàm strtotime[] [String to time ] trong PHP để thực thi công việc trên. Vì sao lại sử dụng hàm đó ?

  • Sau khi truy vấn cơ sở dữ liệu, kiểu Ngày trả về dưới dạng chuỗi
  • Hàm này sẽ trả về số giây bắt đầu từ 00. 00. 00 ngày 01/01/1970 đến thời điểm bạn so sánh, hiểu đơn giản là nếu bạn viết strtotime[2011-08-15] thì nó sẽ trả về tổng số giây từ 00. 00. 00 ngày 01/01/1970 đến 15/8/2011

3, Trình diễn

Mình sẽ viết 1 đoạn chương trình nhỏ để các bạn dễ hiểu hơn

Kết quả trả lại là ngày mai

Аксессуары для мицубиси аутлендер 3 там

4, Kết luận

Trên đây là cách sử dụng hàm chuyển một chuỗi về dạng tháng và so sánh các ngày với nhau. Tùy theo yêu cầu mà bạn có thể tùy biến hàm này theo nhiều cách khác nhau. Để tìm hiểu sâu hơn về các hàm ngày tròn PHP , các bạn có thể đọc trên PHP Manual

Sử dụng toán tử so sánh

Cách đơn giản và thô sơ nhất là sử dụng toán tử so sánh của PHP [toán tử so sánh]. Tuy nhiên, không nên sử dụng toán tử Equal [==] mà nên sử dụng toán tử Identical [===]. By because == không so sánh kiểu dữ liệu và có thể dẫn đến sai lệch trong quá trình so sánh. Ta hãy xem thử ví dụ sau

Nội dung chính

  • Sử dụng toán tử so sánh
  • Use function strcmp[]
  • Sử dụng hàm similar_text
  • Use function levenshtein
  • Use function soundex
  • Use metaphone function
  • Người giới thiệu

Nội dung chính

  • Sử dụng toán tử so sánh
  • Use function strcmp[]
  • Sử dụng hàm similar_text
  • Use function levenshtein
  • Use function soundex
  • Use metaphone function
  • Người giới thiệu

Nội dung chính

  • Sử dụng toán tử so sánh
  • Use function strcmp[]
  • Sử dụng hàm similar_text
  • Use function levenshtein
  • Use function soundex
  • Use metaphone function
  • Người giới thiệu

Viết tắt sử dụng toán tử 3 ngôi [ternary operator]

Mặc dù sử dụng 0 và mật khẩu mặc định hoàn toàn khác nhau nhưng kết quả trả về là đúng thay vì sai. Bởi vì khi PHP sẽ dập tắt ép kiểu về float để so sánh, và ép kiểu chuỗi 'mật khẩu mặc định' về kiểu float thì nó sẽ đưa ra kết quả như sau. int[0];

Do đó khi so sánh 2 chuỗi 1e3 và 1000 bằng phép toán == ta được kết quả đúng

Chủ Đề