Score:1

วิธีแปลงวันที่เป็นเวลาประทับโดยใช้เขตเวลา

ธง ls

ฉันใช้ strtotime เพื่อแปลงวันที่เป็นเวลาประทับ แต่มันทำงานไม่ถูกต้อง ฉันรู้ว่ามันสัมพันธ์กับเขตเวลา เขตเวลาที่เก็บ drupal ของฉันคือเดนเวอร์ ฉันไม่แน่ใจว่าเหตุใดจึงไม่แสดงวันที่ที่ถูกต้อง มีความแตกต่างประมาณหนึ่งวัน วันสุดท้ายฉันใช้ 31 แต่ฉันได้รับวันที่ 30 ไม่ใช่ 31

นี่คือคำถามของฉันในการทำให้วันที่เป็นเวลาและดึงบันทึก

date_default_timezone_set(drupal_get_user_timezone());
$startdate = strtotime(\Drupal::request()->query->get('startdate')); // 2021-12-01
$endate = strtotime(\Drupal::request()->query->get('enddate')); //2021-12-31
$database = \Drupal::database();
ถ้า(!empty($startdate)){
$userrecord = $database->query("SELECT mail, access FROM users_field_data WHERE access BETWEEN $startdate and $endate")->fetchAll(); 

นี่คือกิ่งไม้ที่ฉันเรียกว่าวันที่

{{ result.access|format_date('custom', 'F j, Y')|e }}
my flag
แบบสอบถาม DB นั้นเปิดให้ฉีด SQL โปรดอ่าน https://www.drupal.org/docs/drupal-apis/database-api/static-queries#placeholders สำหรับวิธีจัดการพารามิเตอร์อย่างปลอดภัย
Score:2
ธง cn

Drupal เก็บเวลาไว้เป็น UTC เสมอ ไม่เคยอยู่ตามเวลาท้องถิ่น การประทับเวลาของ Unix ยังเป็นไปตามคำจำกัดความใน UTC

คุณสามารถแปลงสตริงวันที่ในเครื่องเป็นการประทับเวลาโดยสร้างวัตถุ \DateTime:

$timestamp = (ใหม่ \DateTime('2021-12-31'))->getTimestamp();

ซึ่งใช้เขตเวลาเริ่มต้นของ PHP หรือโดยการระบุเขตเวลาของคุณเอง:

$timestamp = (ใหม่ \DateTime('2021-12-31', ใหม่ \DateTimeZone('America/New_York')))->getTimestamp();

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา