Saya memiliki formulir yang melewati dua tanggal (mulai dan selesai) ke skrip PHP yang akan menambahkannya ke DB. Saya mengalami masalah saat memvalidasi ini. Saya terus mendapatkan kesalahan berikut
Ditemukan nilai numerik yang tidak terbentuk dengan baik
Ini adalah saat saya menggunakan yang berikut ini
date("d",$_GET['start_date']);
Tetapi ketika saya menggunakan fungsi strtotime () seperti yang disarankan oleh banyak situs, saya mendapatkan tanggal stempel waktu unix 1/1/1970. Ada ide bagaimana saya bisa mendapatkan tanggal yang benar?
php
validation
date
time
Deviland
sumber
sumber
$_GET['start_date']
berisi.$_GET['start_date']
bukan stempel waktu yang diharapkan olehdate
fungsi sebagai argumen keduaJawaban:
Karena Anda meneruskan string sebagai argumen kedua ke fungsi tanggal, yang seharusnya berupa bilangan bulat.
Coba strtotime yang akan mengurai tentang deskripsi tanggal waktu tekstual bahasa Inggris apa pun menjadi stempel waktu Unix (integer):
sumber
public function __construct(int $someId....)
Cukup Anda bisa menyelesaikan masalah ini menggunakan
strtotime()
fungsi.sumber
$_GET['start_date']
bukan numerik adalah taruhan saya, tetapi format tanggal tidak didukung olehstrtotime
. Anda perlu memformat ulang tanggal ke format yang bisa diterapkan untuk waktu tempuh atau menggunakan kombinasi explode / mktime .Saya dapat menambahkan Anda contoh jika Anda berbaik hati mengirim format yang Anda terima saat ini.
sumber
Saya mengalami situasi yang sama ini (dalam kasus saya dengan nilai tanggal dalam bidang PHP kustom dalam tampilan Drupal), dan yang berhasil bagi saya adalah menggunakan intval, bukan strtotime untuk mengubah nilai menjadi integer - karena pada dasarnya itu adalah stempel waktu , tetapi dalam bentuk string, bukan integer. Jelas bukan itu yang terjadi pada semua orang, tetapi mungkin patut dicoba.
sumber
Kesalahan ini terjadi saat Anda melakukan kalkulasi dengan variabel yang menggunakan huruf yang digabungkan dengan angka (alfanumerik), misalnya 24kb, 886ab ...
Saya mengalami kesalahan dalam fungsi berikut
Aplikasi mengunggah gambar tetapi tidak berhasil, itu menunjukkan peringatan berikut:
Solusi: The
intval()
fungsi ekstrak nilai integer dari variabel dengan data alfanumerik dan menciptakan sebuah variabel baru dengan nilai yang sama tetapi dikonversi ke integer denganintval()
fungsi. Ini kodenya:sumber
Ini sangat membantu saya -
sumber
Ini adalah pertanyaan lama, tetapi ada cara halus lain pesan ini bisa terjadi. Ini dijelaskan dengan cukup baik di sini, di dokumen .
Bayangkan pemandangan ini:
Dan
MyCustomExceptionHandler
diartikan secara kasar seperti:Ini sebenarnya akan memicu pengecualian baru di penangan pengecualian khusus karena
Exception
kelas mengharapkan angka untuk parameter kedua dalam konstruktornya, tetapiPDOException
mungkin secara dinamis mengubah jenis kembalian dari$e->getCode()
ke string.Solusi untuk ini adalah dengan menentukan Anda pengendali pengecualian khusus seperti:
sumber
Meneruskan string tidak selalu menjadi masalah, jika hanya berisi angka.
Salah satu alasan lain hal ini dapat terjadi adalah jika Anda memiliki spasi sebelum atau sesudah. Misalnya "1557399276"
sumber
Jika kesalahan terjadi pada saat penghitungan apa pun, periksa kembali apakah nilainya tidak mengandung koma (,). Nilai harus hanya dalam format integer / float.
sumber
Anda perlu menyetel zona waktu menggunakan date_default_timezone_set ().
sumber
Dalam kasus saya itu adalah kunci untuk sem_get
$ key harus berupa int, jika tidak, Anda akan mendapatkan error berikut:
sumber
jika $ _GET ['start_date'] adalah sebuah string maka konversikan dalam integer atau double untuk menangani numerik.
sumber