获取开始和结束时间戳方法

获取需要的时间戳(开始 and 结束 时间戳) 调用如下方法就行

function getWantTimestamp(props) {
  //当前时间
  const nowDate = parseInt((new Date().getTime() / 1000).toString()); //当前时间
  switch (props) {
    // 当前时间时间戳
    case "nowData": {
      return nowDate;
    }
    // 当前零点得时间戳
    case "nowZero": {
      let nowZero = nowDate - (nowDate % 86400) - 3600 * 8;
      return nowZero;
    }
    // 过去24小时的时间戳
    case "formerlyDay": {
      let formerlyDay = nowDate - 86400;
      return formerlyDay;
    }
    // 昨天的零点的时间戳
    case "yesterdayZero": {
      let yesterdayZero = nowDate - (nowDate % 86400) - 3600 * 8 - 3600 * 24;
      return yesterdayZero;
    }
    // 本周星期一零点的时间戳
    case "thisMondayZero": {
      let nowThisWeek = new Date().getDay(); //获取当前周
      let a = nowDate - (nowThisWeek - 1) * 86400; //得到当前时间到这周
      let thisMondayZero = a - (a % 86400) - 3600 * 8;
      return thisMondayZero;
    }
    // 上周星期一零点的时间戳
    case "lastMondayZero": {
      let nowThisWeek = new Date().getDay(); //获取当前周
      let a = nowDate - (nowThisWeek - 1) * 86400; //得到当前时间到这周
      let thisMondayZero = a - (a % 86400) - 3600 * 8;
      let lastMondayZero = thisMondayZero - 86400 * 7;
      return lastMondayZero;
    }
    // 过去7天的时间戳
    case "formerlySevenDay": {
      let formerlySevenDay = nowDate - 86400 * 7;
      return formerlySevenDay;
    }
    // 本月开始第一天零点的时间戳
    case "thisMonthBeginZero": {
      let MonthDate: any = new Date();
      MonthDate.setDate(1); //set设置时间
      MonthDate.setHours(0);
      MonthDate.setSeconds(0);
      MonthDate.setMinutes(0);
      let thisMonthBeginZero = parseInt((MonthDate / 1000).toString());
      return thisMonthBeginZero;
    }
    // 过去30天的时间戳
    case "formerlyThirtyDays": {
      let formerlyThirtyDays = nowDate - 86400 * 30;
      return formerlyThirtyDays;
    }
    // 上个月的零点的时间戳
    case "lastMonthDayZero": {
      let nowMonthDate: any = new Date();
      let getMonth = nowMonthDate.getMonth() + 1;
      nowMonthDate.setMonth(getMonth - 2);
      nowMonthDate.setDate(1); //set设置时间
      nowMonthDate.setHours(0);
      nowMonthDate.setSeconds(0);
      nowMonthDate.setMinutes(0);
      let lastMonthDayZero = parseInt((nowMonthDate / 1000).toString());
      return lastMonthDayZero;
    }
    // 今年开始第一天零点的时间戳
    case "thisYearDayZero": {
      let yearDate: any = new Date();
      yearDate.setMonth(0);
      yearDate.setDate(1); //set设置时间
      yearDate.setHours(0);
      yearDate.setSeconds(0);
      yearDate.setMinutes(0);
      let thisYearDayZero = parseInt((yearDate / 1000).toString());
      return thisYearDayZero;
    }
    // 过去12个月的时间戳
    case "formerlyTwelveYearZero": {
      let now12Date: any = new Date();
      let getYear12 = now12Date.getFullYear();
      now12Date.setYear(getYear12 - 1);
      let formerlyTwelveYearZero = parseInt((now12Date / 1000).toString());
      return formerlyTwelveYearZero;
    }
    // 去年开始第一天的时间戳
    case "lastYearDayZero": {
      let nowYearDate: any = new Date();
      let getYear = nowYearDate.getFullYear();
      nowYearDate.setYear(getYear - 1);
      nowYearDate.setMonth(0);
      nowYearDate.setDate(1); //set设置时间
      nowYearDate.setHours(0);
      nowYearDate.setSeconds(0);
      nowYearDate.setMinutes(0);
      let lastYearDayZero = parseInt((nowYearDate / 1000).toString());
      return lastYearDayZero;
    }
    default: {
      console.log("时间参数错误");
      return 0;
    }
  }
}

调用getWantTimestamp()方法 传入参数返回需要的时间戳

getWantTimestamp("nowZero")    //nowZero是switch 判断的参数

参数值具体看文章的 switch case “nowZero” 的对应值

需要那个时间段的时间 只要调用方法给对应的值就可以得到return的时间戳

<think>嗯,用户想知道怎么生成处理开始结束时间戳。首先,我得回忆一下不同编程语言里的时间处理方式。比如在Python里,可以用datetime模块来获取当前时间,然后用timestamp()方法转成时间戳。Java的话,可能用System.currentTimeMillis()或者Date类。JavaScript里就是Date.now()或者new Date().getTime()。 然后,用户可能还关心如何记录开始结束时间,计算时间差。比如在代码里,先记录开始时间戳,执行任务后再记录结束时间,相减得到耗时。这个在性能测试或者监控任务执行时间的时候挺常用的。 还要注意时间戳的单位,通常是秒或者毫秒,不同语言默认的可能不同,需要统一处理。比如Python的timestamp()返回的是浮点数秒,而JavaScript的Date.now()是毫秒。转换的时候可能需要乘以1000或者除以1000来保持单位一致。 另外,用户提到想处理开始结束时间,可能还需要将时间戳转换成可读的日期格式。比如用strftime方法格式化,或者用toISOString转成ISO标准格式。这部分在日志记录或者显示给用户的时候很重要。 还要考虑到时区的问题,时间戳通常是UTC时间,但转换成字符串的时候可能会受到系统时区的影响。需要确保转换时区正确,或者显式指定时区。 可能用户的应用场景包括性能分析、任务调度、事件日志记录等。比如引用中的示例用JavaScript计算任务执行时间,或者Python中转换年月日为时间戳。这时候可能需要处理用户输入的时间,比如从字符串解析成日期对象,再生成时间戳。 另外,引用里提到了线程池优化,时间戳在处理任务耗时线程等待时间上有应用。所以用户可能是在做系统优化,需要精确测量时间间隔来调整线程数量或者其他参数。 总结下来,步骤大致是:获取当前时间戳作为开始时间,执行任务,获取结束时间戳,计算差值。同时可能需要格式化成可读时间,或者从特定日期生成时间戳。不同语言的实现方式不同,但思路类似。要确保时间单位一致,处理时区问题,并应用在合适的场景中,比如性能监控、日志记录等。</think>### 如何生成处理开始结束时间戳编程 #### 1. 生成时间戳 时间戳通常表示从特定时间点(如1970-01-01 UTC)到当前时间的毫秒数或秒数。以下是不同语言中生成时间戳方法: - **Python** 使用`time`或`datetime`模块: ```python import time start_timestamp = time.time() # 返回浮点数(秒级) from datetime import datetime end_timestamp = datetime.now().timestamp() # 精确到微秒 ``` - **JavaScript** 使用`Date`对象: ```javascript const startTimestamp = Date.now(); // 毫秒级 const endTimestamp = new Date().getTime(); // 等效方法 ``` - **Java** 使用`System.currentTimeMillis()`或`Instant`类: ```java long startTimestamp = System.currentTimeMillis(); // 毫秒级 long endTimestamp = Instant.now().toEpochMilli(); // Java 8+推荐 ``` #### 2. 计算时间间隔 通过记录开始结束时间戳,可精确测量代码执行耗时: ```python import time start = time.time() # 执行任务(例如排序、IO操作) time.sleep(2) end = time.time() duration = end - start # 单位:秒 print(f"耗时:{duration:.3f}秒") ``` #### 3. 时间戳与日期格式互转 - **时间戳转日期** Python示例: ```python from datetime import datetime timestamp = 1717024000 date_obj = datetime.fromtimestamp(timestamp) print(date_obj.strftime("%Y-%m-%d %H:%M:%S")) # 输出:2024-05-30 12:26:40 ``` - **日期转时间戳** 若需将特定日期转为时间戳: ```python from datetime import datetime date_str = "2024-05-30 12:00:00" date_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S") timestamp = date_obj.timestamp() ``` #### 4. 应用场景 - **性能分析**:记录函数或任务的执行时间,优化代码效率[^4]。 - **日志记录**:在日志中添加时间戳以追踪事件顺序[^2]。 - **定时任务**:通过时间戳判断任务是否超时。 #### 5. 注意事项 - **单位一致性**:确保开始结束时间戳单位相同(秒/毫秒)。 - **时区处理**:转换时需明确时区,默认通常为UTC或系统时区[^5]。 - **高精度需求**:使用`time.perf_counter()`(Python)或`performance.now()`(JS)获取更高精度计时。 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值