時間型選択リストから保存

in #side7apex5 years ago
trigger MeetingTrigger on Meeting__c (before insert, before update) {
    if (Trigger.isBefore && Trigger.isInsert) {
        for (Meeting__c newMeeting : Trigger.new) {

            // 選択リストの値(時と分)を数値型に変換する
            Integer startTimeHour = Integer.valueOf(newMeeting.Start_Time_Hour_JST__c);
            Integer startTimeMinute = Integer.valueOf(newMeeting.Start_Time_Minute_JST__c);

            // 時間型のインスタンスを作成する。
            Time startTimeJST = Time.newInstance(startTimeHour, startTimeMinute, 0, 0);

            // JST(+09:00) から GMT(+00:00) に変換する
            Time startTimeGMT = startTimeJST.addHours(-9);

            // 時間項目を更新する
            newMeeting.Start_Time__c = startTimeGMT;
        }
    } else if (Trigger.isBefore && Trigger.isUpdate) {
        for (Meeting__c newMeeting : Trigger.new) {

            // 更新の場合、選択リストが変更されている時にのみ、時間項目を更新する。
            // 同時に時間項目が直接更新された場合は、選択リストの値で上書きされていますので注意
            Meeting__c oldMeeting = Trigger.oldMap.get(newMeeting.Id);
            if (newMeeting.Start_Time_Hour_JST__c != oldMeeting.Start_Time_Hour_JST__c || 
                newMeeting.Start_Time_Minute_JST__c != oldMeeting.Start_Time_Minute_JST__c) {
                    newMeeting.Start_Time__c = Time.newInstance(Integer.valueOf(newMeeting.Start_Time_Hour_JST__c), 
                                                                Integer.valueOf(newMeeting.Start_Time_Minute_JST__c),
                                                                0, 0).addHours(-9);
            }
        }
    }
}

Coin Marketplace

STEEM 0.17
TRX 0.24
JST 0.034
BTC 95288.12
ETH 2701.60
SBD 0.67