编程语言
首页 > 编程语言> > apex的Datetime类型是什么?

apex的Datetime类型是什么?

作者:互联网

以下是 Datetime 类的常见用法及其相关操作:

创建 Datetime 对象

  1. 使用 now() 方法获取当前日期和时间

    Datetime currentDateTime = Datetime.now();
    System.debug(currentDateTime); // 输出当前日期和时间,例如:2023-10-05 14:30:00
    

    Apex
  2. 使用 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
  3. 从字符串解析日期和时间: 使用 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
  4. 从 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

时间运算

  1. 添加或减去天数: 使用 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
  2. 添加或减去小时: 使用 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
  3. 添加或减去分钟: 使用 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
  4. 添加或减去秒: 使用 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
  5. 添加或减去年份: 使用 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

获取日期和时间组件

  1. 获取年份: 使用 year() 方法。

    Datetime currentDateTime = Datetime.now();
    Integer year = currentDateTime.year();
    System.debug(year); // 输出当前年份,例如:2023
    

    Apex
  2. 获取月份: 使用 month() 方法。

    Datetime currentDateTime = Datetime.now();
    Integer month = currentDateTime.month();
    System.debug(month); // 输出当前月份,例如:10
    

    Apex
  3. 获取日: 使用 day() 方法。

    Datetime currentDateTime = Datetime.now();
    Integer day = currentDateTime.day();
    System.debug(day); // 输出当前日,例如:5
    

    Apex
  4. 获取小时: 使用 hour() 方法。

    Datetime currentDateTime = Datetime.now();
    Integer hour = currentDateTime.hour();
    System.debug(hour); // 输出当前小时,例如:14
    

    Apex
  5. 获取分钟: 使用 minute() 方法。

    Datetime currentDateTime = Datetime.now();
    Integer minute = currentDateTime.minute();
    System.debug(minute); // 输出当前分钟,例如:30
    

    Apex
  6. 获取秒: 使用 second() 方法。

    Datetime currentDateTime = Datetime.now();
    Integer second = currentDateTime.second();
    System.debug(second); // 输出当前秒,例如:0
    

    Apex
  7. 获取毫秒: 使用 millisecond() 方法。

    Datetime currentDateTime = Datetime.now();
    Integer millisecond = currentDateTime.millisecond();
    System.debug(millisecond); // 输出当前毫秒,例如:123
    

    Apex

比较日期和时间

  1. 比较两个日期和时间是否相等: 使用 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
  2. 比较两个日期和时间的先后顺序: 使用 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

格式化日期和时间输出

  1. 将日期和时间转换为字符串: 使用 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

标签:
来源: