Salesforce Apex – รูปแบบวันที่

Salesforce Apex Rup Baeb Wan Thi



การติดตามรายละเอียดของลูกค้าในบัญชี/ผู้ติดต่อเป็นสิ่งสำคัญมากในการจัดการลูกค้าสัมพันธ์ (CRM) ตามวันที่ กระบวนการทั้งหมด เช่น การจัดซื้อ การเสนอราคา และการบริการจะเกิดขึ้น มาดูวิธีสร้างวันที่จากสตริงใน Salesforce และแปลงวันที่เป็นสตริง ในส่วนหนึ่งของบทช่วยสอนนี้ เราจะเห็นวิธีการที่ใช้กับวันที่ที่จัดรูปแบบ เช่น การเพิ่มวัน ปี เดือน ฯลฯ พร้อมตัวอย่าง

Apex Date คลาส

คลาสวันที่รองรับเมธอดวันที่ทั้งหมดซึ่งเป็นแบบดั้งเดิม มันใช้เนมสเปซ 'ระบบ' เราสามารถใช้เมธอด valueOf() จากคลาสนี้เพื่อแปลงสตริงเป็นรูปแบบวันที่ หลังจากจัดรูปแบบวันที่แล้ว เราใช้วิธีการบางอย่างเพื่อเพิ่มวัน เดือน ปี ฯลฯ ให้กับวันที่ที่จัดรูปแบบนี้โดยใช้วิธีการบางอย่างที่มีอยู่ในคลาสวันที่นี้







อันดับแรก เราจะดูวิธีแปลงสตริงเป็นวันที่โดยใช้เมธอด valueOf() ใน Salesforce Apex



Date.valueOf()

ค่าของ () ใน Apex มีอยู่ในคลาส 'วันที่' ซึ่งใช้สตริงเป็นอาร์กิวเมนต์ที่แปลงสตริงที่ระบุเป็นรูปแบบวันที่ สตริงอินพุต (พารามิเตอร์) ประกอบด้วยแอตทริบิวต์สามรายการ ได้แก่ ปี เดือน และวัน ทั้งสามนี้รวมกัน/เชื่อมและส่งต่อไปยังเมธอด



ไวยากรณ์: ValueOf()

ดังที่กล่าวไว้แล้ว เราจำเป็นต้องประกาศตัวแปรของคลาส 'วันที่' และส่งผ่านสตริงไป





วันที่ date_variable= date.valueOf(string_date_format);

ตัวอย่าง:

ขั้นตอนที่ 1:

มาทำสตริงที่เก็บ 'ปี-เดือน-วัน' กันเถอะ

// ประกาศปี เดือน วัน ทีละรายการ

ปีสตริง = '2023';

สตริงเดือน = '4';

วันสตริง = '5';

// นำทั้งหมดมาต่อกันเป็นสตริง

สตริง string_type = ปี + '-' + เดือน + '-' + วัน;

system.debug(string_type);

เอาท์พุต:



ขั้นตอนที่ 2:

ตอนนี้ แปลงสตริง 'Date' ก่อนหน้าเป็น 'Date' โดยใช้เมธอด valueOf() จากคลาส Apex 'Date'

// แปลงสตริงวันที่เป็นวันที่

วันที่ converter_date = date.valueOf(string_type);

system.debug (แปลงวันที่);

เอาท์พุต:

เราจะเห็นว่าหลังจากแปลงเป็น 'วันที่' แล้ว จะส่งคืนวันที่ในรูปแบบ DateTime โดยอัตโนมัติ จะไม่พิจารณาเวลา (ชั่วโมง: นาที: วินาที) แม้ว่าคุณจะส่งผ่านค่าเหล่านี้ไปยังเมธอด valueOf() รูปแบบที่ส่งคืนคือ YYYY-MM-DD HH:MM:SS

แปลงวันที่เป็นสตริง

มีสองวิธีในการแปลง 'วันที่' เป็น 'สตริง' วิธีหนึ่งที่ Apex รองรับคือการใช้เมธอด format() อีกวิธีหนึ่งคือการแยกแอตทริบิวต์ 'วันที่' (ปี เดือน และวัน) ด้วยตนเองและเชื่อมเข้าด้วยกันเป็นสตริง ลองดูทีละรายการ

1. รูปแบบ()

เมธอด format() มีอยู่ในคลาส 'Date' ใน Apex ซึ่งจะแปลง 'Date' เป็นสตริงในรูปแบบ 'M/D/YYYY' เรายังสามารถส่งรูปแบบที่ระบุเป็นพารามิเตอร์ไปยังเมธอดนี้ได้อีกด้วย รูปแบบที่ระบุเป็นรูปแบบเริ่มต้น

ไวยากรณ์:

input_date.format (“format_type”)

ตัวอย่าง:

ลองพิจารณาตัวอย่างก่อนหน้านี้และแปลงกลับ 'วันที่' เป็น 'สตริง' โดยใช้วิธี format() เราไม่ได้จัดเตรียมรูปแบบเฉพาะใดๆ ให้กับเมธอด format()

// ประกาศปี เดือน วัน ทีละรายการ

ปีสตริง = '2023';

สตริงเดือน = '4';

วันสตริง = '5';

// นำทั้งหมดมาต่อกันเป็นสตริง

สตริง string_type = ปี + '-' + เดือน + '-' + วัน;

// แปลงสตริงวันที่เป็นวันที่

วันที่ converter_date = date.valueOf(string_type);

system.debug (แปลงวันที่);

// รูปแบบ()

system.debug(converted_date.format());

เอาท์พุต:

2. การใช้วิธีคลาสวันที่

ในสถานการณ์สมมตินี้ เราจะแยกปี เดือน และวันแยกจาก 'วันที่' โดยใช้วิธีการที่มีอยู่ในคลาส 'วันที่' ของ Apex ต่อไป เราเชื่อมสามสิ่งนี้เข้าด้วยกันเพื่อส่งคืน 'วันที่' ในรูปแบบ 'สตริง'

  1. วัน() – วิธีนี้ใช้เพื่อแยกวันที่ออกจาก “วันที่” ส่งกลับจำนวนเต็มที่ระบุวันที่
  2. เดือน() – วิธีนี้ใช้เพื่อดึงเดือนจาก “วันที่” ส่งกลับจำนวนเต็มที่ระบุหมายเลขเดือน เราสามารถอ้างถึงเดือนมกราคมเป็น 1, กุมภาพันธ์เป็น 2…. ธันวาคมเป็น 12
  3. ปี() – วิธีนี้ใช้เพื่อดึงปีจาก “วันที่” ส่งกลับปีในรูปแบบสี่หลัก

ไวยากรณ์:

input_date.year() + '-' + input_date.month() + '-' + input_date.day()

ตัวอย่าง:

แปลงกลับ 'วันที่' เป็น 'สตริง' ในรูปแบบ 'YYYY-M-D'

// ประกาศปี เดือน วัน ทีละรายการ

ปีสตริง = '2023';

สตริงเดือน = '4';

วันสตริง = '5';

// นำทั้งหมดมาต่อกันเป็นสตริง

สตริง string_type = ปี + '-' + เดือน + '-' + วัน;

// แปลงสตริงวันที่เป็นวันที่

วันที่ converter_date = date.valueOf(string_type);

system.debug (แปลงวันที่);

// แปลงวันที่เป็นสตริง

system.debug(converted_date.year() + '-' + Convert_date.month() + '-' + Convert_date.day());

เอาท์พุต:

ตัวอย่างการปฏิบัติ:

มาดูวิธีอัปเดต 'วันที่' เช่น การเพิ่มวัน ปี และเดือนไปยังวันที่ที่มีอยู่ในออบเจกต์ Salesforce ทั้งสามวิธีใช้จำนวนเต็ม 'n' เป็นอาร์กิวเมนต์

1. เพิ่มวัน ()

หากต้องการเพิ่มวันในวันที่ที่มีอยู่ Apex รองรับเมธอด addDays() ซึ่งมีอยู่ในคลาส 'วันที่'

2. เพิ่มเดือน ()

หากต้องการเพิ่มเดือนในวันที่ที่มีอยู่ Apex รองรับเมธอด addMonths() ซึ่งมีอยู่ในคลาส 'วันที่'

3. เพิ่มปี ()

หากต้องการเพิ่มปีให้กับวันที่ที่มีอยู่ Apex รองรับเมธอด addYears() ซึ่งมีอยู่ในคลาส 'วันที่'

ไวยากรณ์:

มาดูไวยากรณ์ของทั้งสามวิธีนี้กัน ที่นี่ 'n' ระบุค่าจำนวนเต็ม

  • input_Date.addDays(n)
  • input_Date.addMonths(n)
  • input_Date.addYears(n)

ก่อนไปที่ตัวอย่าง ให้พิจารณาสิ่งต่อไปนี้:

  1. เข้าสู่ระบบ Salesforce และไปที่ “ตัวเรียกใช้งานแอป” และค้นหา “แคมเปญ” ในแท็บ ที่นี่ เราใส่ 'ชื่อแคมเปญ' และ 'วันที่สิ้นสุด'

  1. เลือก 'แคมเปญ' แล้วคลิก 'ใหม่'

  1. ป๊อปอัปปรากฏขึ้นเพื่อแทรกข้อมูลลงในแคมเปญ เพิ่ม “Linux Hint Posts” ใต้ “Campaign Name” และตั้งค่า “End Date” เป็น 4/5/2023 จากนั้นคลิกที่ “บันทึก”

เราพร้อมบันทึก (ประเภท – Conference และ Status – Planned จะมาอัตโนมัติ ปล่อยไว้อย่างนั้น) มาเปิดหน้าต่างนิรนามในคอนโซลนักพัฒนาซอฟต์แวร์กันเถอะ

ตัวอย่างที่ 1:

ลองใช้เมธอด addDays() เพื่อเพิ่ม 10 วันให้กับ 'วันที่สิ้นสุด' ที่มีอยู่ในวัตถุ 'แคมเปญ'

  1. ในการดำเนินการนี้ ก่อนอื่นเราต้องใช้ SOQL Query เพื่อรับบันทึกจากวัตถุ 'แคมเปญ' และจัดเก็บบันทึกนี้ในวัตถุ 'รายการ'
  2. ต่อไป เราใช้ลูป 'for' เพื่อวนซ้ำรายการ และใช้เมธอด addDays() เพื่อเพิ่ม 10 วันใน 'วันที่สิ้นสุด'
  3. สุดท้าย เราใช้คำสั่ง 'อัปเดต DML' เพื่ออัปเดต 'วันที่สิ้นสุด' ในออบเจ็กต์ 'แคมเปญ'
// ส่งคืนชื่อและวันที่สิ้นสุดจากแคมเปญโดยใช้ SOQL

Listquery1 = [เลือกชื่อ,วันที่สิ้นสุดจากแคมเปญ WHERE Name = 'Linux Hint Posts'];

// เพิ่ม 10 วันใน EndDate โดยใช้วิธี addDays()

สำหรับ (แคมเปญ i:query1){

i.EndDate = i.EndDate.addDays(10);

}

// ใช้อัปเดต DML เพื่ออัปเดตวันที่สิ้นสุด

อัปเดตแบบสอบถาม 1;

system.debug(query1);

เอาท์พุต:

“วันที่สิ้นสุด” ก่อนหน้านี้คือวันที่ 5 เมษายน หลังจากเพิ่มอีก 10 วัน 'วันที่สิ้นสุด' คือวันที่ 15 เมษายน

เรายังสามารถตรวจสอบในแท็บ “แคมเปญ” ย้อนกลับและรีเฟรชหน้า คุณจะเห็นว่ามีการอัปเดต 'วันที่สิ้นสุด'

ตัวอย่างที่ 2:

ลองใช้เมธอด addMonths() เพื่อเพิ่ม 3 เดือนให้กับ “วันที่สิ้นสุด” ที่มีอยู่

// ส่งคืนชื่อและวันที่สิ้นสุดจากแคมเปญโดยใช้ SOQL

Listquery1 = [เลือกชื่อ,วันที่สิ้นสุดจากแคมเปญ WHERE Name = 'Linux Hint Posts'];

system.debug('จริง:'+query1);

// เพิ่ม 3 เดือนใน EndDate โดยใช้วิธี addMonths()

สำหรับ (แคมเปญ i:query1){

i.EndDate = i.EndDate.addMonths(3);

}

// ใช้อัปเดต DML เพื่ออัปเดตวันที่สิ้นสุด

อัปเดตแบบสอบถาม 1;

system.debug('อัพเดท:'+query1);

เอาท์พุต:

เดือนก่อนหน้าใน “วันที่สิ้นสุด” คือเดือนเมษายน หลังจากบวกไป 3 เดือน ตอนนี้เป็นเดือนกรกฎาคม

ตัวอย่างที่ 3:

ลองใช้เมธอด addYears() เพื่อเพิ่ม 3 ปีให้กับ “วันที่สิ้นสุด” ที่มีอยู่

// ส่งคืนชื่อและวันที่สิ้นสุดจากแคมเปญโดยใช้ SOQL

Listquery1 = [เลือกชื่อ,วันที่สิ้นสุดจากแคมเปญ WHERE Name = 'Linux Hint Posts'];

system.debug('จริง:'+query1);

// เพิ่ม 3 ปีให้กับ EndDate โดยใช้วิธี addYears()

สำหรับ (แคมเปญ i:query1){

i.EndDate = i.EndDate.addYears(3);

}

// ใช้อัปเดต DML เพื่ออัปเดตวันที่สิ้นสุด

อัปเดตแบบสอบถาม 1;

system.debug('อัพเดท:'+query1);

เอาท์พุต:

หลังจากเพิ่ม 3 ปีใน 'วันที่สิ้นสุด' ปีที่อัปเดตคือ 2026

บทสรุป

การจัดรูปแบบวันที่ใน Salesforce Apex นั้นค่อนข้างง่าย ในบทช่วยสอนนี้ เราได้เรียนรู้วิธีแปลง 'วันที่' จากรูปแบบ 'สตริง' เป็น 'วันที่' โดยใช้เมธอด valueOf() ที่มีอยู่ในคลาส 'วันที่' ของเอเพ็กซ์ หากคุณต้องการแปลงวันที่กลับเป็นสตริง เราจะใช้แอตทริบิวต์ format() และวันที่ เช่น day(), month() และ year() สุดท้าย เราจบคำแนะนำนี้ด้วยการพูดคุยเกี่ยวกับการดำเนินการ DML บนออบเจกต์ 'แคมเปญ' ของ Salesforce เพื่ออัปเดต 'วันที่สิ้นสุด' โดยใช้เมธอด addDays(), addMonths() และ addYears() พร้อมตัวอย่างแยกกัน