chapter 5 引用类型 (5.3 Date 类型)

本文深入讲解JavaScript中的Date对象,包括其创建方式、属性及方法。通过示例代码演示如何使用Date对象处理日期与时间,解释Date.parse()和Date.UTC()等关键函数。

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

《JavaScript高级程序设计》第三版 笔记
参考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date

5.3 Date 类型

ECMAScript 中的 Date 类型是在早期 Java 中的 java.util.Date 类基础上构建的;
为此, Date 类型使用自 UTC (Coordinated Universal Time ,国际协调时间1970 年 1 月 1 日午夜(零时)开始经过的毫秒数来保存日期 ;
在使用这种数据存储格式的条件下, Date 类型保存的日期能够精确到 1970 年 1 月 1 日之前或之后的 285616 年。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date

创建日期对象
new 操作符 + Date 构造函数。
在不传参的情况下,新创建的对象自动获得当前日期和时间。

//Date对象没有字面量格式
//当Date作为构造函数调用并传入多个参数时,所定义参数代表的是当地时间

new Date();
new Date(value);
new Date(dateString);  //该参数应符合 IETF-compliant RFC 2822 timestamps 或 version of ISO8601
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);

/**
*value -  代表自1970年1月1日 00:00:00 (世界标准时间)起经过的毫秒数。
*dateString - 表示日期的字符串值。该字符串应该能被 Date.parse() 方法识别。
*year - 代表年份的整数值。为了避免2000年问题最好指定4位数的年份;使用 1998 ,而不要使用 98 。
*month - 代表月份的整数值,从 0(1月) 到 11(12月)。
*day - 代表一个月中的第几天的整数值,从 1 开始。
*hour - 代表一天中的小时数的整数值(24小时制)。
*minute - 分钟数。
*second - 秒数。
*millisecond - 表示时间的毫秒部分的整数值。
*/

example:

<!DOCTYPE html>
<html lang="zh-cmn-hans">
<head>
  <meta charset="utf-8">
  <title>Title</title>

  <style>
    body {
      line-height: 180%;
    }
  </style>
</head>
<body>

  <script>

    //Date()构造函数
    //Date对象没有字面量格式
    //当Date作为构造函数调用并传入多个参数时,所定义参数代表的是当地时间
    var timeD = new Date();  //实例化一个日期对象
    var timeD2 = Date();  //返回一个字符串
    var timeD3 = new Date(2013,13,1);
    var timeD4 = new Date(2014,1,1);
    alert("new Date():" + timeD + "---" + "Date():" + timeD2);
    console.log("new Date():" + timeD + "---" + "Date():" + timeD2);

    document.write("new Date():------" + timeD + "<br>");
    document.write("Date():------" + timeD2 + "<br>");
    document.write("typeof (new Date()):------" + (typeof timeD) + "<br>");
    document.write("typeof (Date()):------" + (typeof timeD2) + "<br><br>");

    document.write("new Date(2013,13,1):------" + timeD3 + "<br>");
    document.write("new Date(2014,1,1):------" + timeD4 + "<br>");
    document.write("new Date(2013,13,1) == new Date(2014,1,1):------" + (timeD3 == timeD4) + "<br>");
    document.write("new Date(2013,13,1).toString() == new Date(2014,1,1).toString():------" + (timeD3.toString() == timeD4.toString()) + "<br><br>");

    document.write("new Date(2018,1,1,13,75):------" + new Date(2018,1,1,13,75) + "<br><br>");

    document.write("new Date(1453094034000):------" + new Date(1453094034000) + "<br><br>");

    document.write("new Date('December 17, 1995 03:24:00'):------" + new Date('December 17, 1995 03:24:00') + "<br>");
    document.write("new Date('1995-12-17T03:24:00'):------" + new Date('1995-12-17T03:24:00') + "<br>");
    document.write("new Date(1995, 11, 17):------" + new Date(1995, 11, 17) + "<br>");
    document.write("new Date(1995, 11, 17, 3, 24, 0):------" + new Date(1995, 11, 17, 3, 24, 0) + "<br>");

  </script>
</body>
</html>

这里写图片描述
这里写图片描述

关于 new Date() 的补充说明
example:

<!DOCTYPE html>
<html lang="zh-cmn-hans">
<head>
  <meta charset="utf-8">
  <title>Title</title>

  <style>
    body {
      line-height: 180%;
    }
  </style>
</head>
<body>

  <script>

    //关于 new Date() 的补充说明

    //如果不传参,则 Date 的构造器会依据系统设置的当前时间来创建一个 Date 对象。
    //JavaScript 的 Date 对象为跨平台提供了统一的行为。时间属性可以在不同的系统中表示相同的时刻,而如果使用了本地时间对象,则反映当地的时间。
    //JavaScript 的 Date 对象提供了数个 UTC 时间的方法,也相应提供了当地时间的方法。 UTC ,也就是我们所说的格林威治时间,指的是 time 中的世界时间标准。而当地时间则是指执行 JavaScript 的客户端所设置的时间。
    document.write("new Date():----"  + new Date() + "<br>");

    //如果提供了至少两个参数,其余的参数均会默认设置为 1 (如果没有提供 day 参数)或 0 。
    document.write("new Date(2018,7):----" + new Date(2018,7) + "<br>");

    //JavaScript 的时间是由世界标准时间(UTC) 1970年1月1日开始,用毫秒计时。
    //一天由 86,40 0,000 毫秒组成。
    //Date 对象的范围是 -100,000,000 天至 100,000,000 天(等效的毫秒值)。
    document.write("new Date(86400000)" + new Date(86400000) + "<br>");
    document.write("new Date((86400000*-100000000)):----" + new Date((86400000*-100000000)) + "<br>");
    document.write("new Date((86400000*100000000)):----" + new Date((86400000*100000000)) + "<br>");

    document.write("new Date((86400000*-100000001)):----" + new Date((86400000*-100000001)) + "<br>");
    document.write("new Date((86400000*100000001)):----" + new Date((86400000*100000001)) + "<br>");

    //以一个函数的形式来调用 JavaScript 的 Date 对象(不使用 new 操作符)会返回一个代表当前日期和时间的字符串。

  </script>
</body>
</html>

这里写图片描述
这里写图片描述

Date 对象的属性
Date.prototype :
允许为 Date 实例对象添加属性。

Date.length :
Date.length 的值是 7 。这是该构造函数可接受的参数个数。

Date 对象的方法
Date.now() :
返回自 1970-1-1 00:00:00 UTC(世界标准时间)至今所经过的毫秒数。

Date.parse() :
解析一个表示日期的字符串,并返回从 1970-1-1 00:00:00 所经过的毫秒数。

Date.UTC() :
接受和构造函数最长形式的参数相同的参数 (从 2 到 7 ) ,并返回从 1970-1-1 00:00:00 UTC 开始所经过的毫秒数。

example:

<!DOCTYPE html>
<html lang="zh-cmn-hans">
<head>
  <meta charset="utf-8">
  <title>Title</title>

  <style>
    body {
      line-height: 180%;
    }
  </style>
</head>
<body>

  <script>

    //Date.length
    //Date.now()
    document.write("Date.length:----" + Date.length + "<br>");
    document.write("Date.now():----" + Date.now() + "<br>");
    document.write("new Date(Date.now()):----" + new Date(Date.now()) + "<br>");

  </script>
</body>
</html>

这里写图片描述

根据特定日期和时间创建日期对象:
方法一:
传入表示该日期的毫秒数(即从 UTC 时间 1970 年 1 月 1 日午夜起至该日期止经过的毫秒数,可以通过 Date.parse() 和 Date.UTC() 方法来获取)。

方法二:
直接将表示日期的字符串传递给 Date 构造函数,也会在后台调用 Date.parse() 。

Date.parse()方法:
参数:
一个表示日期的字符串

Date.parse(datestring);

结果:
返回从 1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的 UTC 时间)的毫秒数;
如传入的字符串不能表示日期,则返回 NaN
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

example:

<!DOCTYPE html>
<html lang="zh-cmn-hans">
<head>
  <meta charset="utf-8">
  <title>Title</title>

  <style>
    body {
      line-height: 180%;
    }
  </style>
</head>
<body>

  <script>

    //Date.parse()
    document.write("8 个小时对应的毫秒数:----" + (8*60*60*1000) + "<br>");
    document.write("Date.parse('1970-01-01 00:00:00'):----" + Date.parse('1970-01-01 00:00:00') + "<br>");
    document.write("Date.UTC(1970,0,1,0,0,0):----" + Date.UTC(1970,0,1,0,0,0) + "<br>");

    //如果参数只包含日期格式则将使用 UTC 时区来解析该参数。
    // ISO 8601 格式中规定的时间加日期格式,则将作为本地时区处理。
    document.write("Date.parse('Jan 1, 1970'):----" + Date.parse('Jan 1, 1970') + "<br>");
    document.write("Date.parse('1970-01-01'):----" + Date.parse('1970-01-01') + "<br>");

    //指定时区
    document.write("Date.parse('Thu, 01 Jan 1970 00:00:00'):----" + Date.parse('Thu, 01 Jan 1970 00:00:00') + "<br>");
    document.write("Date.parse('Thu, 01 Jan 1970 00:00:00 GMT'):----" + Date.parse('Thu, 01 Jan 1970 00:00:00 GMT') + "<br>");
    document.write("Date.parse('Thu, 01 Jan 1970 00:00:00 +0400'):----" + Date.parse('Thu, 01 Jan 1970 00:00:00 +0400') + "<br>");
    document.write("Date.parse('Thu, 01 Jan 1970 00:00:00 GMT+0400'):----" + Date.parse('Thu, 01 Jan 1970 00:00:00 GMT+0400') + "<br>");
    document.write("Date.parse('Thu, 01 Jan 1970 00:00:00 UTC+0400'):----" + Date.parse('Thu, 01 Jan 1970 00:00:00 UTC+0400') + "<br>");

  </script>
</body>
</html>

这里写图片描述

Date.UTC()方法:
参数:
接受的参数与日期构造函数接受最多参数时一样。

Date.UTC(year,month[,date[,hrs[,min[,sec[,ms]]]]]) 

结果:
返回从 1970-1-1 00:00:00 UTC 到指定日期的毫秒数。

UTC 方法与 Date 有两点不同:
1.Date.UTC 方法使用协调世界时代替本地时间。
2.Date.UTC 方法返回一个时间数值,而不是一个日期对象。

example:

<!DOCTYPE html>
<html lang="zh-cmn-hans">
<head>
  <meta charset="utf-8">
  <title>Title</title>

  <style>
    body {
      line-height: 180%;
    }
  </style>
</head>
<body>

  <script>

    //Date.UTC()
    document.write("new Date(Date.UTC(2018,3,15,12)):----" + new Date(Date.UTC(2018,2,15,12)) + "<br>");
    document.write("new Date(2018,3,15,12):----" + new Date(2018,2,15,12) + "<br>");

  </script>
</body>
</html>

这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述

<think>我们正在寻找与网络小说相关的小程序毕业设计选题,同时需要满足2万字毕业论文的要求。结合引用资料,我们可以从以下几个方面入手:1.**选题方向**:根据引用[2]和引用[3],网络小说阅读系统是一个热门且有实际意义的方向。我们可以设计一个微信小程序,专注于网络小说的阅读和管理。2.**技术实现**:引用[1]和引用[4]都提到微信小程序开发相对简单,且有大量现成模板和源码可供参考。特别是引用[4]提供了500个热门选题推荐,我们可以从中选取与网络小说相关的进行改造。3.**论文支撑**:2万字的论文需要系统性的设计和分析,包括需求分析、系统设计、技术实现、测试等环节。###推荐选题1.**基于微信小程序的网络小说阅读系统**-核心功能:-小说分类展示(玄幻、言情、科幻等)[^2]-小说搜索与排行榜(推荐榜、人气榜)[^2][^3]-个人书架管理(收藏、书签、阅读进度同步)[^2]-阅读界面(字体调整、夜间模式、翻页效果)-用户评论与评分系统-**创新点**:-集成小说数据分析(如基于用户行为的推荐系统)[^3]-实现跨设备阅读进度同步(利用微信云开发)2.**基于爬虫技术的网络小说资源聚合小程序**-核心功能:-多平台小说数据爬取与聚合(需注意法律合规性)[^3]-小说更新提醒与订阅功能-热门小说趋势分析(可视化图表展示)-**创新点**:-动态爬虫调度机制(避免被反爬)-小说内容相似度分析(防止重复推荐)###实现方案(以选题1为例)####技术栈-前端:微信小程序原生框架(WXML/WXSS/JavaScript)-后端:微信云开发(云函数+云数据库+云存储)[^4]-数据分析:Node.js(后端逻辑)+简易推荐算法(基于用户收藏历史)####开发步骤1.**数据来源**-使用公开网络小说API(如第三方书库接口)-或自行爬取小说元数据(仅展示标题/作者/简介,不存储正文)[^3]2.**核心模块实现**```mermaidgraphTDA[用户登录]-->B[首页推荐]B-->C[小说分类]C-->D[详情页]D-->E[阅读器]E-->F[书签/进度保存]B-->G[排行榜]D-->H[评论/评分]F&H-->I[个人中心]```3.**关键代码示例(阅读器进度保存)**```javascript//保存阅读进度到云数据库constsaveProgress=(userId,bookId,chapter,page)=>{wx.cloud.database().collection(&#39;reading_progress&#39;).doc(bookId).set({data:{userId,lastChapter:chapter,lastPage:page,updateTime:newDate()},success:()=>console.log(&#39;进度保存成功&#39;)})}```###论文写作框架(2万字结构)1.**绪论(约3000字)**-研究背景(网络小说市场现状)[^2][^3]-国内外研究综述-研究目标与意义2.**系统需求分析(约4000字)**-功能需求(用例图+流程图)-非功能需求(性能、安全性)-用户画像分析3.**系统设计(约5000字)**-架构设计(分层图)-数据库设计(ER图+表结构)-核心模块详细设计(阅读器、推荐算法)4.**系统实现(约4000字)**-开发环境配置-关键代码解析(附截图)-难点解决方案(如翻页性能优化)5.**系统测试(约2000字)**-测试用例设计-性能测试结果(响应时间、并发能力)-用户满意度调查6.**总结与展望(约2000字)**-论文成果总结-系统不足与改进方向###创新点挖掘(提升论文价值)-**数据分析维度**:参考引用[3]的爬虫系统,增加用户阅读行为分析模块,例如:$$\text{用户偏好指数}=\frac{\sum(\text{类型停留时长})}{\text{总阅读时长}}\times100\%$$-**安全机制**:设计版权保护方案(如仅展示第三方链接,不缓存正文)###资源获取建议1.从引用[4]提供的500套小程序源码中搜索“小说阅读”模板2.使用Python爬虫获取初始小说数据(Scrapy框架)[^3]3.论文图表工具:-原型图:墨刀/Axure-流程图:Draw.io-数据图表:ECharts>**注意事项**:>-避免直接存储小说正文内容(版权风险)>-推荐算法可简化(如基于类型的协同过滤)###相关问题1.微信小程序如何实现翻页动画效果?2.网络小说数据爬取如何避免法律风险?3.如何设计用户行为分析模块的数据库结构?4.微信云开发的并发限制是多少?如何优化?5.毕业论文中如何有效展示系统设计图?</think>基于网络小说主题的微信小程序毕业设计选题及实现方案(附2万字论文框架) ### 一、推荐选题方案(微信小程序方向) #### 选题1:网络小说智能推荐与阅读小程序 **创新点**: - 结合协同过滤算法实现个性化小说推荐 - 集成阅读时长统计和用户行为分析 $$ \text{推荐权重} = \alpha \cdot \text{点击率} + \beta \cdot \text{阅读时长} + \gamma \cdot \text{评分} $$ **核心功能**: 1. 多维度小说分类(玄幻/言情/科幻等) 2. 智能推荐引擎(基于用户偏好) 3. 阅读进度云同步 4. 书评社区互动[^2] **技术实现**:微信小程序 + 云开发 + Python推荐算法 #### 选题2:网络小说数据分析小程序 **创新点**: - 基于Python爬虫的小说数据可视化 - 作者影响力分析模型 $$ \text{作者指数} = \log(\sum \text{作品点击量}) \times \frac{\text{评分}}{5} $$ **核心功能**: 1. 小说榜单实时更新(引用[3]技术) 2. 作品热度趋势图 3. 作者创作能力评估 4. 读者群体画像分析 #### 选题3:网络小说版权交易平台小程序 **创新点**: - 区块链存证技术保障版权 - 智能合约自动化交易 **核心功能**: 1. 作品版权登记存证 2. 版权交易撮合系统 3. 收益分配智能合约 4. 侵权监测预警 > **选题评估**: > | 选题 | 创新性 | 技术深度 | 数据获取 | 论文支撑 | > |--------------|--------|----------|----------|----------| > | 智能推荐 | ★★★★☆ | ★★★☆☆ | 容易 | 强 | > | 数据分析 | ★★★☆☆ | ★★★★☆ | 需爬虫 | 强 | > | 版权交易 | ★★★★★ | ★★★★☆ | 困难 | 中等 | ### 二、实现方案(以选题1为例) #### 技术架构 ```mermaid graph LR A[微信小程序前端] --> B[云函数] B --> C[云数据库] B --> D[Python推荐服务] D --> E[小说元数据库] E -->|数据源| F[第三方API/爬虫] ``` #### 开发步骤 1. **数据准备阶段**(2周) - 爬取起点/纵横等平台小说元数据(Python+Scrapy)[^3] - 构建初始推荐矩阵: $$ R_{m \times n} = \begin{bmatrix} r_{11} & \cdots & r_{1n} \\ \vdots & \ddots & \vdots \\ r_{m1} & \cdots & r_{mn} \end{bmatrix} $$ 2. **核心功能开发**(4周) ```javascript // 推荐算法云函数示例 exports.main = async (event) => { const { userId } = event; const userPref = await db.collection(&#39;user_behavior&#39;).where({userId}).get(); const simScores = calculateSimilarity(userPref, allNovels); return sortBy(simScores, &#39;score&#39;).slice(0,10); } ``` 3. **特色模块实现** - **阅读进度同步**:使用云数据库实时保存阅读位置 - **夜间模式**:CSS变量动态切换主题 ```css :root { --bg-color: #ffffff; --text-color: #333333; } [data-theme=&#39;dark&#39;] { --bg-color: #1a1a1a; --text-color: #e6e6e6; } ``` ### 三、2万字论文框架 #### 第1章 绪论(2500字) 1.1 研究背景(网络小说市场现状)[^2] 1.2 国内外研究综述 1.3 研究目标与意义 **重点**:引用行业数据证明需求合理性 #### 第2章 关键技术(4000字) 2.1 微信小程序框架体系 2.2 协同过滤算法理论 $$ \text{相似度计算}:\text{cos}(θ) = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \|\mathbf{B}\|} $$ 2.3 云开发技术优势[^4] 2.4 数据爬取与清洗技术[^3] #### 第3章 系统设计(4500字) 3.1 需求分析(用例图) 3.2 架构设计(分层架构图) 3.3 数据库设计(ER图+表结构) 3.4 推荐算法详细设计 $$ \text{预测评分}:\hat{r}_{ui} = \bar{r_u} + \frac{\sum_{j \in N(i)} \text{sim}(i,j)(r_{uj} - \bar{r_u})}{\sum_{j \in N(i)}|\text{sim}(i,j)|} $$ #### 第4章 系统实现(4000字) 4.1 开发环境配置 4.2 核心模块实现(代码片段+界面截图) 4.3 关键技术难点解决 - 跨设备同步方案 - 冷启动问题处理 #### 第5章 系统测试(2500字) 5.1 测试环境搭建 5.2 功能测试用例(表格展示) 5.3 性能测试结果 | 并发用户数 | 响应时间(ms) | 错误率 | |------------|--------------|--------| | 50 | 320 | 0% | | 100 | 480 | 0.2% | #### 第6章 总结与展望(2000字) 6.1 研究成果总结 6.2 系统局限性分析 6.3 未来改进方向 ### 四、创新点强化建议 1. **数据分析深度** - 增加读者行为聚类分析: $$ \text{WCSS} = \sum_{k=1}^{K} \sum_{x_i \in C_k} \|x_i - \mu_k\|^2 $$ 2. **交互创新** - 语音朗读功能(TTS引擎集成) 3. **商业模式** - 章节解锁激励机制设计 ### 五、资源获取建议 1. 使用引用[4]的微信小程序模板库(搜索"小说阅读") 2. 爬虫代码参考引用[3]的Python实现 3. 论文案例库:中国知网检索"小程序 推荐系统" > **注意事项**: > - 避免直接存储小说内容(版权风险) > - 推荐算法需有数学公式支撑 > - 测试数据需包含≥50人的用户样本 --- ### 相关问题 1. 如何合法获取网络小说数据用于毕业设计? 2. 协同过滤算法在小程序中如何优化性能? 3. 微信小程序如何实现跨设备阅读进度同步? 4. 毕业论文中如何有效展示系统架构设计? 5. 网络小说推荐系统的评价指标有哪些?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值