🐴
APEX:YYYY年MM月DD日hh:mm PM/AMの文字列をUnixTime形式に変更する
背景
メール件名に日付情報が入っているので、Salesforceの日付/時刻 型に格納したい
変換前
YYYY年MM月DD日hh:mm PM/AM
変換後
YYYY-MM-DDThh:mm:ss.000+0000
ソースコード
String patternSentenceSubjectTime = '\\((.*)年(.*)月(.*)日(.*):(.*)\\s(AM|PM)\\)';
// $1 年
// $2 月
// $3 日
// $4 時
// $5 分
// $6 PM/AM
Pattern sentencePatternSubjectTime = Pattern.compile(patternSentenceSubjectTime);
Integer amount,subYear,subMonth,subDay,subHour,subMinute = 0;
while(sentenceMatcherSubjectTime.find()){
subYear = Integer.valueOf(sentenceMatcherSubjectTime.group(1));
subMonth = Integer.valueOf(sentenceMatcherSubjectTime.group(2));
subDay = Integer.valueOf(sentenceMatcherSubjectTime.group(3));
subMinute = Integer.valueOf(sentenceMatcherSubjectTime.group(5));
if (sentenceMatcherSubjectTime.group(6) == 'PM'){
subHour = Integer.valueOf(sentenceMatcherSubjectTime.group(4))+12;
}
else {
subHour = Integer.valueOf(sentenceMatcherSubjectTime.group(4));
}
dt = Datetime.newInstance( subYear,subMonth,subDay,subHour,subMinute,0);
}
結果
こんな感じで入るようになった。ヨシ!!
Discussion