如何拿到Data类型23:59:59时的日期

本文介绍如何使用SimpleDateFormat解析日期并调整为指定时间,如从默认00:00:00转换为23:59:59,同时演示了通过Calendar实现精确时间控制的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date startTime = format.parse(date);
        

这样得到的是00:00:00时的数据,如果我需要23:59:59呢

如下:

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(startTime);
        calendar.add(Calendar.HOUR,23);//时
        calendar.add(Calendar.MINUTE,59);//分
        calendar.add(Calendar.SECOND,59);//秒
        Date endTime = calendar.getTime();

这样endTime的时分秒就是23:59:59了

我希望只爬取到长视频,而不是shorts,怎么在下面这个基础上修改 import requests # 步骤1: 设置YouTube Data API密钥和参数 API_KEY = "AIzaSyDamdPaOhc9nt6jugspO_zfuD6NrNq2GxE" # 请替换为你自己的API密钥 TAG = "chinatravel" # 目标标签(如 "chinatravel") MAX_RESULTS = 50 # 最多获取50个视频 # 筛选发布日期:2024年1月1日 00:00:00 到 2024年12月31日 23:59:59(UTC格式) PUBLISHED_AFTER = "2024-01-01T00:00:00Z" PUBLISHED_BEFORE = "2024-12-31T23:59:59Z" def get_top_videos_by_tag_and_date(api_key, tag, max_results, published_after, published_before): """ 1) 先调用 search.list 按 viewCount 排序、按发布间筛选,获取前 max_results 个视频的 ID 列表(此暂不包含 viewCount) 2) 再调用 videos.list 获取这些视频的详细信息(包含 statistics 字段,从而拿到真实 viewCount) 3) 将结果按 viewCount 从高到低排序,返回包含 title、url、view_count 的列表 """ # ———— 第一步:search.list,获取视频 ID ———— search_url = "https://www.googleapis.com/youtube/v3/search" search_params = { "key": api_key, "q": tag, "part": "snippet", "type": "video", "order": "viewCount", # 按播放量降序 "maxResults": max_results, # 最多50个 "publishedAfter": published_after, "publishedBefore": published_before, "relevanceLanguage": "en" # 可选:限定英文相关结果 } response = requests.get(search_url, params=search_params) if response.status_code != 200: raise Exception(f"Search API 请求失败,状态码:{response.status_code},响应信息:{response.text}") search_data = response.json() video_ids = [item["id"]["videoId"] for item in search_data.get("items", [])] if not video_ids: print("未找到符合条件的视频。") return [] # ———— 第二步:videos.list,获取各视频的播放量等详细信息 ———— # 将视频ID列表拼成逗号分隔的字符串 id_str = ",".join(video_ids) videos_url = "https://www.googleapis.com/youtube/v3/videos" videos_params = { "key": api_key, "id": id_str, "part": "snippet,statistics", # 拿到标题(snippet.title)和播放量(statistics.viewCount) } resp2 = requests.get(videos_url, params=videos_params) if resp2.status_code != 200: raise Exception(f"Videos API 请求失败,状态码:{resp2.status_code},响应信息:{resp2.text}") videos_data = resp2.json() videos = [] for item in videos_data.get("items", []): vid = item["id"] title = item["snippet"]["title"] view_count = int(item["statistics"].get("viewCount", 0)) url = f"https://www.youtube.com/watch?v={vid}" videos.append({ "id": vid, "title": title, "url": url, "view_count": view_count }) # 虽然 search.list 返回已按 viewCount 排序,但为了防止 API 返回不完全匹配,在此再按 view_count 进行一次排序 videos.sort(key=lambda x: x["view_count"], reverse=True) return videos if __name__ == "__main__": # 调用函数,获取前50个视频的信息 top_videos = get_top_videos_by_tag_and_date( API_KEY, TAG, MAX_RESULTS, PUBLISHED_AFTER, PUBLISHED_BEFORE ) # 打印输出:显示视频标题、链接、播放量(便于查看) print(f"获取到 {len(top_videos)} 个符合标签 '{TAG}' 且在指定日期范围内的热门视频(按播放量排序):\n") for idx, video in enumerate(top_videos, start=1): print(f"{idx}. 标题: {video['title']}") print(f" 播放量: {video['view_count']}") print(f" 链接: {video['url']}\n") # 将所有链接单独保存到一个 txt 文件,每行一个视频链接 output_filename = "video_links.txt" with open(output_filename, "w", encoding="utf-8") as f: for video in top_videos: f.write(video["url"] + "\n") print(f"所有视频链接已另存为 '{output_filename}',每行一个链接。")
最新发布
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值