You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中将datetime的日期部分转换为timestamp?

这问题我之前也碰到过,核心逻辑就是把原日期时间的时分秒部分重置为00:00:00,再转成时间戳就行。给你整理了几个主流编程语言的实现方案:

解决方法:提取日期部分并转换为当日0点的时间戳

Python

用datetime模块的replace方法直接清零时分秒,再转时间戳:

from datetime import datetime

# 原日期时间对象
dt = datetime(2018, 2, 26, 20, 30, 0)
# 重置时分秒、微秒为0
dt_date_only = dt.replace(hour=0, minute=0, second=0, microsecond=0)
# 转换为秒级时间戳
timestamp = dt_date_only.timestamp()
print(timestamp)  # 输出:1519603200.0

如果是字符串格式的日期,先转成datetime对象再处理:

dt_str = "2018-02-26 20:30:00"
dt = datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S")
dt_date_only = dt.replace(hour=0, minute=0, second=0, microsecond=0)
timestamp = dt_date_only.timestamp()

JavaScript

创建Date对象后,手动设置时分秒为0,再用getTime()获取毫秒级时间戳:

// 原日期时间字符串
const dtStr = "2018-02-26 20:30:00";
// 转成兼容浏览器的Date对象
const dt = new Date(dtStr.replace(' ', 'T'));
// 清零时分秒、毫秒
dt.setHours(0, 0, 0, 0);
// 毫秒级时间戳,要秒级就除以1000
const timestamp = dt.getTime();
console.log(timestamp);  // 输出:1519603200000

Java

推荐用Java 8+的新日期API,更简洁:

import java.time.LocalDateTime;
import java.time.ZoneOffset;

public class Main {
    public static void main(String[] args) {
        // 原日期时间
        LocalDateTime dt = LocalDateTime.of(2018, 2, 26, 20, 30, 0);
        // 重置时分秒、纳秒为0
        LocalDateTime dtDateOnly = dt.withHour(0).withMinute(0).withSecond(0).withNano(0);
        // 转换为UTC+8时区的秒级时间戳
        long timestamp = dtDateOnly.toEpochSecond(ZoneOffset.of("+8"));
        System.out.println(timestamp);  // 输出:1519603200
    }
}

如果用旧版Calendar类:

import java.util.Calendar;

public class Main {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.set(2018, Calendar.FEBRUARY, 26, 20, 30, 0);
        // 清零时分秒、毫秒
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        // 获取毫秒级时间戳
        long timestamp = cal.getTimeInMillis();
        System.out.println(timestamp);  // 输出:1519603200000
    }
}

小提醒

  • 时区很关键:不同时区下当日0点的时间戳差异很大,一定要和业务需求的时区保持一致(比如UTC、本地时区)。
  • 如果是从数据库取数据,有些数据库本身支持提取日期部分(比如MySQL的DATE()函数),可以先在数据库层面处理,效率更高。

内容的提问来源于stack exchange,提问作者hd.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:04:45