apex的Datetime类型是什么?
作者:互联网
以下是 Datetime
类的常见用法及其相关操作:
创建 Datetime 对象
-
使用 now() 方法获取当前日期和时间:
Datetime currentDateTime = Datetime.now(); System.debug(currentDateTime); // 输出当前日期和时间,例如:2023-10-05 14:30:00
Apex -
使用 newInstance(year, month, day, hour, minute, second) 构造函数创建特定日期和时间: 注意:月份是从 1 开始计数的。
Datetime specificDateTime = Datetime.newInstance(2023, 10, 5, 14, 30, 0); System.debug(specificDateTime); // 输出:2023-10-05 14:30:00
Apex -
从字符串解析日期和时间: 使用
Datetime.valueOf(String)
方法将格式为 "yyyy-MM-dd HH:mm:ss" 的字符串转换为 Datetime 对象。String dateTimeString = '2023-10-05 14:30:00'; Datetime parsedDateTime = Datetime.valueOf(dateTimeString); System.debug(parsedDateTime); // 输出:2023-10-05 14:30:00
Apex -
从 Date 和 Time 创建 Datetime: 使用
newInstance(Date, Time)
方法结合Date
和Time
对象创建Datetime
。Date date = Date.newInstance(2023, 10, 5); Time time = Time.newInstance(14, 30, 0, 0); Datetime dateTime = Datetime.newInstance(date, time); System.debug(dateTime); // 输出:2023-10-05 14:30:00
Apex
时间运算
-
添加或减去天数: 使用
addDays(integer)
方法。Datetime currentDateTime = Datetime.now(); Datetime futureDateTime = currentDateTime.addDays(7); // 一周后的日期和时间 Datetime pastDateTime = currentDateTime.addDays(-3); // 三天前的日期和时间 System.debug(futureDateTime); // 输出:当前日期 + 7 天 System.debug(pastDateTime); // 输出:当前日期 - 3 天
Apex -
添加或减去小时: 使用
addHours(integer)
方法。Datetime currentDateTime = Datetime.now(); Datetime futureDateTime = currentDateTime.addHours(5); // 五小时后的日期和时间 Datetime pastDateTime = currentDateTime.addHours(-2); // 两小时前的日期和时间 System.debug(futureDateTime); // 输出:当前时间 + 5 小时 System.debug(pastDateTime); // 输出:当前时间 - 2 小时
Apex -
添加或减去分钟: 使用
addMinutes(integer)
方法。Datetime currentDateTime = Datetime.now(); Datetime futureDateTime = currentDateTime.addMinutes(30); // 半小时后的日期和时间 Datetime pastDateTime = currentDateTime.addMinutes(-15); // 十五分钟前的日期和时间 System.debug(futureDateTime); // 输出:当前时间 + 30 分钟 System.debug(pastDateTime); // 输出:当前时间 - 15 分钟
Apex -
添加或减去秒: 使用
addSeconds(integer)
方法。Datetime currentDateTime = Datetime.now(); Datetime futureDateTime = currentDateTime.addSeconds(60); // 一分钟后的日期和时间 Datetime pastDateTime = currentDateTime.addSeconds(-30); // 三十秒前的日期和时间 System.debug(futureDateTime); // 输出:当前时间 + 60 秒 System.debug(pastDateTime); // 输出:当前时间 - 30 秒
Apex -
添加或减去年份: 使用
addYears(integer)
方法。Datetime currentDateTime = Datetime.now(); Datetime futureDateTime = currentDateTime.addYears(1); // 一年后的日期和时间 Datetime pastDateTime = currentDateTime.addYears(-5); // 五年前的日期和时间 System.debug(futureDateTime); // 输出:当前日期 + 1 年 System.debug(pastDateTime); // 输出:当前日期 - 5 年
Apex
获取日期和时间组件
-
获取年份: 使用
year()
方法。Datetime currentDateTime = Datetime.now(); Integer year = currentDateTime.year(); System.debug(year); // 输出当前年份,例如:2023
Apex -
获取月份: 使用
month()
方法。Datetime currentDateTime = Datetime.now(); Integer month = currentDateTime.month(); System.debug(month); // 输出当前月份,例如:10
Apex -
获取日: 使用
day()
方法。Datetime currentDateTime = Datetime.now(); Integer day = currentDateTime.day(); System.debug(day); // 输出当前日,例如:5
Apex -
获取小时: 使用
hour()
方法。Datetime currentDateTime = Datetime.now(); Integer hour = currentDateTime.hour(); System.debug(hour); // 输出当前小时,例如:14
Apex -
获取分钟: 使用
minute()
方法。Datetime currentDateTime = Datetime.now(); Integer minute = currentDateTime.minute(); System.debug(minute); // 输出当前分钟,例如:30
Apex -
获取秒: 使用
second()
方法。Datetime currentDateTime = Datetime.now(); Integer second = currentDateTime.second(); System.debug(second); // 输出当前秒,例如:0
Apex -
获取毫秒: 使用
millisecond()
方法。Datetime currentDateTime = Datetime.now(); Integer millisecond = currentDateTime.millisecond(); System.debug(millisecond); // 输出当前毫秒,例如:123
Apex
比较日期和时间
-
比较两个日期和时间是否相等: 使用
equals(Datetime)
方法。Datetime dateTime1 = Datetime.newInstance(2023, 10, 5, 14, 30, 0); Datetime dateTime2 = Datetime.newInstance(2023, 10, 5, 14, 30, 0); Boolean areEqual = dateTime1.equals(dateTime2); System.debug(areEqual); // 输出:true
Apex -
比较两个日期和时间的先后顺序: 使用
before(Datetime)
和after(Datetime)
方法。Datetime dateTime1 = Datetime.newInstance(2023, 10, 5, 14, 30, 0); Datetime dateTime2 = Datetime.newInstance(2023, 10, 5, 15, 0, 0); Boolean isBefore = dateTime1.before(dateTime2); Boolean isAfter = dateTime1.after(dateTime2); System.debug(isBefore); // 输出:true System.debug(isAfter); // 输出:false
Apex
格式化日期和时间输出
- 将日期和时间转换为字符串: 使用
format()
方法可以将日期和时间格式化为特定区域设置的字符串。Datetime currentDateTime = Datetime.now(); String formattedDateTime = currentDateTime.format(); // 默认区域设置 String formattedDateTimeWithLocale = currentDateTime.format('yyyy-MM-dd HH:mm:ss', 'en_US'); // 指定区域设置 System.debug(formattedDateTime); // 输出:根据默认区域设置格式化的日期和时间字符串 System.debug(formattedDateTimeWithLocale); // 输出:2023-10-05 14:30:00
Apex
示例:计算两个日期和时间之间的差值
public class DateTimeDifference {
public static Long getMillisecondsBetweenDatetimes(Datetime startTime, Datetime endTime) {
if (startTime == null || endTime == null) {
return null;
}
return Math.abs(startTime.getTime() - endTime.getTime());
}
public static Integer getMinutesBetweenDatetimes(Datetime startTime, Datetime endTime) {
if (startTime == null || endTime == null) {
return null;
}
return Math.abs(startTime.minutesBetween(endTime));
}
}
// 使用示例
Datetime dateTime1 = Datetime.newInstance(2023, 10, 1, 12, 0, 0);
Datetime dateTime2 = Datetime.newInstance(2023, 10, 1, 14, 30, 0);
Long millisecondsBetween = DateTimeDifference.getMillisecondsBetweenDatetimes(dateTime1, dateTime2);
Integer minutesBetween = DateTimeDifference.getMinutesBetweenDatetimes(dateTime1, dateTime2);
System.debug(millisecondsBetween); // 输出:9000000(即1.5小时)
System.debug(minutesBetween); // 输出:150
Apex
标签: 来源: