Nhận giá trị datetimepicker PHP

Các phần tử

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
5 thuộc loại
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6 tạo các điều khiển đầu vào cho phép người dùng dễ dàng nhập cả ngày và giờ, bao gồm năm, tháng và ngày cũng như thời gian tính bằng giờ và phút

Thử nó

Giao diện người dùng của điều khiển nói chung thay đổi từ trình duyệt này sang trình duyệt khác. Trong các trình duyệt không có hỗ trợ, những trình duyệt này xuống cấp một cách duyên dáng thành các điều khiển

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
7 đơn giản

Điều khiển nhằm biểu thị ngày và giờ địa phương, không nhất thiết phải là ngày và giờ địa phương của người dùng. Nói cách khác, việc triển khai phải cho phép bất kỳ sự kết hợp hợp lệ nào của năm, tháng, ngày, giờ và phút—ngay cả khi sự kết hợp đó không hợp lệ theo múi giờ địa phương của người dùng (chẳng hạn như thời gian trong khoảng thời gian tiết kiệm ánh sáng ban ngày giữa mùa xuân và chuyển tiếp . Một số trình duyệt di động (đặc biệt là trên iOS) hiện không triển khai chính xác điều này

Do trình duyệt hỗ trợ hạn chế cho

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6 và các biến thể trong cách thức hoạt động của đầu vào, tốt nhất hiện tại vẫn có thể sử dụng khung hoặc thư viện để trình bày những thứ này hoặc sử dụng đầu vào tùy chỉnh của riêng bạn. Một tùy chọn khác là sử dụng các đầu vào
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
9 và
<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
0 riêng biệt, mỗi đầu vào được hỗ trợ rộng rãi hơn so với
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6

Một số trình duyệt có thể sử dụng yếu tố đầu vào chỉ có văn bản để xác thực rằng kết quả là giá trị ngày/giờ hợp lệ trước khi cho phép chúng được gửi đến máy chủ, nhưng bạn không nên dựa vào hành vi này vì bạn không thể dễ dàng dự đoán

Giá trị

Một chuỗi đại diện cho giá trị của ngày được nhập vào đầu vào. Định dạng của giá trị ngày và giờ được sử dụng bởi loại đầu vào này được mô tả trong Chuỗi ngày và giờ cục bộ trong Định dạng ngày và giờ được sử dụng trong HTML

Bạn có thể đặt giá trị mặc định cho đầu vào bằng cách bao gồm ngày và giờ bên trong thuộc tính

<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
2, như vậy

________số 8

Một điều cần lưu ý là định dạng ngày và giờ được hiển thị khác với thực tế của

<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
2; . Ví dụ: khi giá trị trên được gửi đến máy chủ, nó sẽ trông giống như
<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
6

Ghi chú. Ngoài ra, hãy nhớ rằng nếu dữ liệu đó được gửi qua HTTP

<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
7, ký tự dấu hai chấm sẽ cần được thoát để đưa vào tham số URL, e. g.
<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
8. Xem
<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
9 để biết cách thực hiện việc này

Ví dụ, bạn cũng có thể lấy và đặt giá trị ngày trong JavaScript bằng thuộc tính

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
60
<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
2

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';

Có một số phương pháp được cung cấp bởi JavaScript's

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
62 có thể được sử dụng để chuyển đổi thông tin ngày tháng thành một chuỗi được định dạng đúng. Ví dụ: phương thức
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
63 trả về ngày/giờ theo UTC với hậu tố "
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
64" biểu thị múi giờ đó;

thuộc tính bổ sung

Ngoài các thuộc tính chung cho tất cả các phần tử

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
5, đầu vào datetime-local cung cấp các thuộc tính sau

tối đa

Ngày và giờ mới nhất để chấp nhận. Nếu

<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
2 được nhập vào phần tử muộn hơn dấu thời gian này, thì phần tử không xác thực được ràng buộc. Nếu giá trị của thuộc tính
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
69 không phải là một chuỗi hợp lệ theo định dạng
<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
5, thì phần tử không có giá trị tối đa

Giá trị này phải chỉ định chuỗi ngày muộn hơn hoặc bằng chuỗi ngày được chỉ định bởi thuộc tính

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
81

tối thiểu

Ngày và thời gian sớm nhất để chấp nhận; . Nếu giá trị của thuộc tính

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
81 không phải là một chuỗi hợp lệ tuân theo định dạng
<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
5, thì phần tử đó không có giá trị nhỏ nhất

Giá trị này phải chỉ định một chuỗi ngày sớm hơn hoặc bằng chuỗi được chỉ định bởi thuộc tính

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
69

bươc

Thuộc tính

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
85 là một số chỉ định mức độ chi tiết mà giá trị phải tuân thủ hoặc giá trị đặc biệt
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
86, được mô tả bên dưới. Chỉ các giá trị bằng với cơ sở cho bước (
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
81 nếu được chỉ định,
<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
2 nếu không và giá trị mặc định phù hợp nếu không có giá trị nào được cung cấp) mới hợp lệ

Giá trị chuỗi là

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
86 có nghĩa là không có bước nào được ngụ ý và mọi giá trị đều được phép (ngoại trừ các ràng buộc khác, chẳng hạn như
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
81 và
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
69)

Ghi chú. Khi dữ liệu do người dùng nhập không tuân theo cấu hình từng bước, tác nhân người dùng có thể làm tròn đến giá trị hợp lệ gần nhất, ưu tiên các số theo hướng dương khi có hai tùy chọn gần bằng nhau

Đối với đầu vào

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6, giá trị của
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
85 được tính bằng giây, với hệ số tỷ lệ là 1000 (vì giá trị số cơ bản tính bằng mili giây). Giá trị mặc định của
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
85 là 60, biểu thị 60 giây (hoặc 1 phút hoặc 60.000 mili giây)

Tại thời điểm này, vẫn chưa rõ giá trị của

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
86 có nghĩa là gì đối với
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
85 khi được sử dụng với đầu vào
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6. Điều này sẽ được cập nhật ngay sau khi thông tin đó được xác định

Sử dụng đầu vào datetime-local

Thoạt nhìn, đầu vào ngày/giờ nghe có vẻ tiện lợi; . Tuy nhiên, có vấn đề với

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
58 do trình duyệt hỗ trợ hạn chế

Chúng ta sẽ xem xét các cách sử dụng cơ bản và phức tạp hơn của

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
58, sau đó đưa ra lời khuyên về cách giảm thiểu vấn đề hỗ trợ trình duyệt sau này (xem Xử lý hỗ trợ trình duyệt)

Sử dụng cơ bản của datetime-local

Việc sử dụng đơn giản nhất của

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
58 liên quan đến sự kết hợp các yếu tố cơ bản của
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
5 và
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
92, như được thấy bên dưới

<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>

Đặt ngày và thời gian tối đa và tối thiểu

Bạn có thể sử dụng các thuộc tính

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
81 và
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
69 để hạn chế ngày/giờ mà người dùng có thể chọn. Trong ví dụ sau, chúng tôi đang đặt ngày giờ tối thiểu là
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
95 và ngày giờ tối đa là
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
96

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6

Kết quả ở đây là

  • Chỉ có thể chọn các ngày trong tháng 6 năm 2017 — chỉ phần "ngày" của giá trị ngày mới có thể chỉnh sửa được và không thể cuộn đến các ngày ngoài tháng 6 trong tiện ích bộ chọn ngày
  • Tùy thuộc vào trình duyệt bạn đang sử dụng, bạn có thể thấy rằng thời gian nằm ngoài các giá trị đã chỉ định có thể không chọn được trong bộ chọn thời gian (e. g. Edge), hoặc không hợp lệ (xem Xác thực) nhưng vẫn khả dụng (e. g. Trình duyệt Chrome)

Ghi chú. Bạn sẽ có thể sử dụng thuộc tính

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
85 để thay đổi số ngày nhảy mỗi khi ngày được tăng lên (e. g. có thể bạn chỉ muốn chọn thứ Bảy). Tuy nhiên, điều này dường như không hoạt động hiệu quả trong bất kỳ triển khai nào tại thời điểm viết

Kiểm soát kích thước đầu vào

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
58 không hỗ trợ các thuộc tính định cỡ kiểm soát biểu mẫu, chẳng hạn như
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
99. Bạn sẽ phải sử dụng CSS để tùy chỉnh kích thước của các phần tử này

Đặt múi giờ

Một điều mà loại đầu vào

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6 không cung cấp là cách đặt múi giờ và/hoặc ngôn ngữ của điều khiển ngày/giờ. Loại này có sẵn trong loại đầu vào
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
01, nhưng loại này hiện đã lỗi thời, đã bị xóa khỏi thông số kỹ thuật. Lý do chính khiến điều này bị xóa là do trình duyệt thiếu triển khai và lo ngại về giao diện/trải nghiệm người dùng. Sẽ dễ dàng hơn nếu chỉ có một điều khiển (hoặc các điều khiển) để đặt ngày/giờ và sau đó xử lý ngôn ngữ trong một điều khiển riêng

Ví dụ: nếu bạn đang tạo một hệ thống mà người dùng có khả năng đã đăng nhập, với ngôn ngữ của họ đã được đặt, thì bạn có thể cung cấp múi giờ ở loại đầu vào

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
02. Ví dụ

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
8

Mặt khác, nếu bạn được yêu cầu cho phép người dùng nhập múi giờ cùng với đầu vào ngày/giờ, bạn có thể có phần tử

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
03 để cho phép người dùng đặt múi giờ phù hợp bằng cách chọn một vị trí cụ thể trong số

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
5

Trong cả hai trường hợp, các giá trị ngày/giờ và múi giờ sẽ được gửi tới máy chủ dưới dạng các điểm dữ liệu riêng biệt, sau đó bạn cần lưu trữ chúng một cách thích hợp trong cơ sở dữ liệu ở phía máy chủ

Thẩm định

Theo mặc định,

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
58 không áp dụng bất kỳ xác thực nào cho các giá trị đã nhập. Việc triển khai giao diện người dùng nói chung không cho phép bạn nhập bất kỳ thứ gì không phải là ngày/giờ — điều này rất hữu ích — nhưng người dùng vẫn có thể không điền giá trị nào và gửi hoặc nhập ngày và/hoặc giờ không hợp lệ (e. g. ngày 32 tháng 4)

Bạn có thể sử dụng

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
81 và
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
69 để hạn chế ngày có sẵn (xem Đặt ngày tối đa và tối thiểu) và bạn có thể sử dụng thuộc tính
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
07 để bắt buộc phải điền ngày/giờ. Do đó, các trình duyệt hỗ trợ sẽ hiển thị lỗi nếu bạn cố gắng gửi ngày nằm ngoài giới hạn đã đặt hoặc trường ngày trống

Hãy xem một ví dụ;

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
9

Nếu bạn cố gắng gửi biểu mẫu với ngày không đầy đủ (hoặc với ngày nằm ngoài giới hạn đã đặt), trình duyệt sẽ hiển thị lỗi. Hãy thử chơi với ví dụ ngay bây giờ

Đây là CSS được sử dụng trong ví dụ trên. Ở đây, chúng tôi sử dụng các thuộc tính CSS

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
08 và
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
09 để tạo kiểu cho đầu vào dựa trên việc giá trị hiện tại có hợp lệ hay không. Chúng tôi phải đặt các biểu tượng trên
<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
20 bên cạnh đầu vào chứ không phải trên chính đầu vào vì trong Chrome, nội dung được tạo được đặt bên trong điều khiển biểu mẫu và không thể được tạo kiểu hoặc hiển thị một cách hiệu quả

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
0

Cảnh báo. Xác thực biểu mẫu HTML không thay thế cho các tập lệnh đảm bảo rằng dữ liệu đã nhập ở định dạng phù hợp. Quá dễ dàng để ai đó thực hiện các điều chỉnh đối với HTML cho phép họ bỏ qua xác thực hoặc xóa hoàn toàn. Cũng có thể ai đó bỏ qua HTML của bạn hoàn toàn và gửi dữ liệu trực tiếp đến máy chủ của bạn. Nếu mã phía máy chủ của bạn không xác thực được dữ liệu mà nó nhận được, thảm họa có thể xảy ra khi dữ liệu được định dạng không đúng (hoặc dữ liệu quá lớn, không đúng loại, v.v.)

Xử lý hỗ trợ trình duyệt

Như đã đề cập ở trên, các trình duyệt không hỗ trợ xuống cấp một cách duyên dáng thành kiểu nhập văn bản, nhưng điều này tạo ra các vấn đề cả về tính nhất quán của giao diện người dùng (điều khiển được trình bày sẽ khác) và xử lý dữ liệu

Vấn đề thứ hai là nghiêm trọng nhất; . Mặt khác, với kiểu nhập văn bản, theo mặc định, trình duyệt không nhận dạng được định dạng của ngày tháng và có rất nhiều cách khác nhau để mọi người viết ngày và giờ, chẳng hạn

  • <form>
      <label for="party">Enter a date and time for your party booking:label>
      <input id="party" type="datetime-local" name="partydate" />
    form>
    
    23
  • <form>
      <label for="party">Enter a date and time for your party booking:label>
      <input id="party" type="datetime-local" name="partydate" />
    form>
    
    24
  • <form>
      <label for="party">Enter a date and time for your party booking:label>
      <input id="party" type="datetime-local" name="partydate" />
    form>
    
    25
  • <form>
      <label for="party">Enter a date and time for your party booking:label>
      <input id="party" type="datetime-local" name="partydate" />
    form>
    
    26
  • <form>
      <label for="party">Enter a date and time for your party booking:label>
      <input id="party" type="datetime-local" name="partydate" />
    form>
    
    27
  • <form>
      <label for="party">Enter a date and time for your party booking:label>
      <input id="party" type="datetime-local" name="partydate" />
    form>
    
    28 (đồng hồ 12 giờ)
  • <form>
      <label for="party">Enter a date and time for your party booking:label>
      <input id="party" type="datetime-local" name="partydate" />
    form>
    
    29 (đồng hồ 24 giờ)
  • vân vân

Một cách giải quyết vấn đề này là đặt thuộc tính

<label for="party">Enter a date and time for your party booking:label>
<input
  id="party"
  type="datetime-local"
  name="partydate"
  value="2017-06-01T08:30" />
30 trên đầu vào
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6 của bạn. Mặc dù đầu vào
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6 không sử dụng nó, dự phòng đầu vào văn bản sẽ. Ví dụ: hãy thử xem bản demo sau trong trình duyệt không hỗ trợ

<form>
  <label for="party">Enter a date and time for your party booking:label>
  <input id="party" type="datetime-local" name="partydate" />
form>
2

Nếu bạn thử gửi nó, bạn sẽ thấy rằng trình duyệt hiện hiển thị thông báo lỗi (và đánh dấu đầu vào là không hợp lệ) nếu mục nhập của bạn không khớp với mẫu

<label for="party">Enter a date and time for your party booking:label>
<input
  id="party"
  type="datetime-local"
  name="partydate"
  value="2017-06-01T08:30" />
33, trong đó
<label for="party">Enter a date and time for your party booking:label>
<input
  id="party"
  type="datetime-local"
  name="partydate"
  value="2017-06-01T08:30" />
34 là một số từ 0 đến 9. Tất nhiên, điều này không ngăn mọi người nhập ngày không hợp lệ hoặc ngày và giờ được định dạng không chính xác

Và người dùng nào sẽ hiểu mẫu mà họ cần nhập ngày giờ?

Chúng tôi vẫn có một vấn đề

<label for="party">Enter a date and time for your party booking:label>
<input
  id="party"
  type="datetime-local"
  name="partydate"
  value="2017-06-01T08:30" />
3

Cách tốt nhất để xử lý ngày tháng trong biểu mẫu theo cách đa trình duyệt vào lúc này là yêu cầu người dùng nhập ngày, tháng, năm và thời gian vào các điều khiển riêng biệt (các yếu tố ___603 phổ biến — xem bên dưới để biết cách triển khai),

Sự cố Y2K38 (thường là phía máy chủ)

JavaScript sử dụng các dấu phẩy động có độ chính xác kép để lưu trữ ngày, cũng như với tất cả các số, có nghĩa là mã JavaScript sẽ không gặp phải sự cố Y2K38 trừ khi sử dụng ép buộc số nguyên/hack bit vì tất cả các toán tử bit JavaScript đều sử dụng số nguyên bổ sung 2 giây có chữ ký 32 bit

Vấn đề là ở phía máy chủ của mọi thứ. lưu trữ ngày lớn hơn 2^31 - 1. Để khắc phục sự cố này, bạn phải lưu trữ tất cả các ngày bằng cách sử dụng số nguyên 32 bit không dấu, số nguyên 64 bit có dấu hoặc dấu phẩy động có độ chính xác kép trên máy chủ. Nếu máy chủ của bạn được viết bằng PHP, cách khắc phục có thể đơn giản như nâng cấp lên PHP 8 hoặc 7 và nâng cấp phần cứng của bạn lên x86_64 hoặc IA64. Nếu bạn gặp khó khăn với phần cứng khác, bạn có thể thử mô phỏng phần cứng 64 bit bên trong máy ảo 32 bit, nhưng hầu hết các máy ảo không hỗ trợ loại ảo hóa này, vì tính ổn định có thể bị ảnh hưởng và hiệu suất chắc chắn sẽ bị ảnh hưởng nghiêm trọng

Sự cố Y10k (thường phía máy khách)

Trong nhiều máy chủ, ngày được lưu trữ dưới dạng số thay vì dưới dạng chuỗi - số có kích thước cố định và định dạng bất khả tri (ngoài tính lâu dài). Sau năm 10.000, những con số đó sẽ lớn hơn một chút so với trước đây, vì vậy nhiều máy chủ sẽ không gặp vấn đề với các biểu mẫu được gửi sau năm 10.000

Vấn đề là ở phía khách hàng của mọi thứ. phân tích ngày có hơn 4 chữ số trong năm

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
0

Nó đơn giản mà. Chỉ cần chuẩn bị mã của bạn cho bất kỳ số chữ số nào. Đừng chỉ chuẩn bị cho 5 chữ số. Đây là mã JavaScript để thiết lập giá trị theo chương trình

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
1

Tại sao phải lo lắng về vấn đề Y10K nếu nó sẽ xảy ra nhiều thế kỷ sau khi bạn qua đời?

ví dụ

Trong ví dụ này, chúng tôi tạo hai bộ thành phần giao diện người dùng để chọn ngày giờ — một bộ chọn

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
58 gốc và một bộ năm thành phần
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
03 để chọn ngày và giờ trong các trình duyệt cũ hơn không hỗ trợ đầu vào gốc

HTML trông giống như vậy

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
2

Các tháng được mã hóa cứng (vì chúng luôn giống nhau), trong khi các giá trị ngày và năm được tạo động tùy thuộc vào tháng và năm được chọn hiện tại và năm hiện tại tương ứng (xem các chú thích mã bên dưới để biết giải thích chi tiết về cách các . ) Chúng tôi cũng quyết định tạo giờ và phút một cách linh hoạt vì có rất nhiều trong số chúng

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
3

Phần khác của mã có thể được quan tâm là mã phát hiện tính năng — để phát hiện xem trình duyệt có hỗ trợ

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
58 hay không, chúng tôi tạo một phần tử
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
5 mới, thử đặt
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
00 thành
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6, sau đó kiểm tra ngay loại của nó được đặt thành. Các trình duyệt không hỗ trợ
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6 trả lại
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
03, vì đó là thứ mà
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
6 quay trở lại. Nếu
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
58 không được hỗ trợ, chúng tôi sẽ ẩn bộ chọn gốc và hiển thị giao diện người dùng bộ chọn dự phòng (
const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
03) thay thế

const dateControl = document.querySelector('input[type="datetime-local"]');
dateControl.value = '2017-06-01T08:30';
4

Ghi chú. Hãy nhớ rằng một số năm có 53 tuần trong đó (xem Số tuần mỗi năm). Bạn sẽ cần cân nhắc điều này khi phát triển các ứng dụng sản xuất

Làm cách nào để lấy giá trị của bộ chọn ngày trong PHP?

Không có phương pháp đặc biệt nào để lấy giá trị từ bộ đếm ngày tháng . Công cụ hẹn hò sẽ chứa đầu vào mà bạn chỉ cần lấy giá trị.

DatePicker nội tuyến là gì?

Bộ chọn ngày nội tuyến có nghĩa là lịch đăng ký đã mở khi màn hình tải . Bài viết này sẽ hướng dẫn bạn quy trình điều chỉnh cấu hình tiêu chuẩn nhanh chóng và dễ dàng.

Làm cách nào để thêm Datetimepicker trong HTML?

The xác định bộ chọn ngày. Giá trị kết quả bao gồm năm, tháng, ngày và thời gian. Mẹo. Luôn thêm thẻ