如何获取指定月份最后一天的23:59:59:000000时间戳
获取指定月份最后一天23:59:59.000000时间戳的实现方法
下面提供几种主流编程语言的实现方案,直接对已获取到的当月最后一天0点时间戳调整即可满足需求:
Python实现
借助datetime和calendar模块,先定位当月最后一天的0点时间,再直接设置时分秒与微秒为目标值,最后格式化输出:
import datetime import calendar def get_month_last_day_end(year, month): # 获取当月最后一天的日期对象 last_day_date = datetime.date(year, month, calendar.monthrange(year, month)[1]) # 拼接出23:59:59.000000的datetime对象 end_datetime = datetime.datetime.combine(last_day_date, datetime.time(23, 59, 59, 0)) # 格式化为目标字符串格式 return end_datetime.strftime("%Y-%m-%d %H:%M:%S:%f") # 示例调用:获取2023年1月的目标时间戳 print(get_month_last_day_end(2023, 1))
Java实现
使用Java 8+的java.time类库,直接构造当月最后一天的23:59:59.000000时间并格式化:
import java.time.LocalDateTime; import java.time.YearMonth; import java.time.format.DateTimeFormatter; public class LastDayEndGenerator { public static void main(String[] args) { int targetYear = 2023; int targetMonth = 1; // 构造当月最后一天的23:59:59.000000时间 LocalDateTime endTime = YearMonth.of(targetYear, targetMonth) .atEndOfMonth() .atTime(23, 59, 59, 0); // 定义匹配目标格式的格式化器 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSSSSS"); // 输出结果 System.out.println(endTime.format(formatter)); } }
JavaScript实现
由于JavaScript的Date对象仅支持毫秒精度,需手动拼接微秒后缀:先获取下个月第一天的时间,减去1秒得到当月最后一天的23:59:59,再补充微秒部分:
function getLastDayEndTimestamp(year, month) { // 生成下个月第一天的0点时间(月份从0开始,所以直接传month) const nextMonthStart = new Date(year, month, 1); // 减去1秒,得到当月最后一天23:59:59的毫秒时间 const endTimeMs = nextMonthStart.getTime() - 1000; const endDate = new Date(endTimeMs); // 补零格式化各时间部分 const formatNum = num => String(num).padStart(2, '0'); // 拼接完整字符串,手动添加微秒后缀000000 return `${endDate.getFullYear()}-${formatNum(endDate.getMonth()+1)}-${formatNum(endDate.getDate())} ${formatNum(endDate.getHours())}:${formatNum(endDate.getMinutes())}:${formatNum(endDate.getSeconds())}:000000`; } // 示例调用:获取2023年1月的目标时间戳 console.log(getLastDayEndTimestamp(2023, 1));
内容的提问来源于stack exchange,提问作者Vasanth
相关产品推荐
相关产品推荐

