JavaScript 动态网页实例 —— 日期时间应用

news/2024/5/19 12:59:48

前言

日期和时间也是网站设计中不可或缺的重要内容。本章基于JavaScript中Date 对象的基本概念,介绍日期和时间的各种应用。鉴于其他章节已间接涉及部分内容,本章主要介绍各类不同时钟的设计,以及各种不同形式的时间的实现,同时,还涉及日历的设计和倒计时效果的实现。

本文例子icon-default.png?t=N7T8https://download.csdn.net/download/cccloveforever/89195752 

5.1带开关的时钟

本节实例给出一个带开关的时钟的实现方法。通过按钮,用户可以控制时钟的显示与隐藏。

要点

本节代码主要使用了 Window对象的setTimeout()方法和clearTimeout()方法,两者的主要功能和用法如下。

  • Window 对象支持一些设置计时器的方法,用于执行特定函数。这些方法包括 setTimeout( )和clearTimeout( )。
  • setTimeout()方法的功能是设置一个超时,以便在将来的某个时间触发某段代码的运行。基本语法是“timerId=setTimeout(要执行的代码,以毫秒为单位的时间)”。其中,“要执行的代码”可以是一个函数,也可以是其他 JavaScript 语句;“以毫秒为单位的时间”指代码执行前需要等待的时间,即超时时间。
  • 可以使用clearTimeout(timerId)取消超时设置。

<script language="JavaScript">
<!--
var enabled=0;    
function TOfunc() {       
TO = window.setTimeout( "TOfunc()", 1000);       
var today = new Date();   
document.clock.disp.value = today.toLocaleString();
}
//-->
</script>
<form name="clock">
<input type="text" name="disp" value="" size=30 onFocus="this.blur()"><br>
<input type="radio" name="rad" value="off" onClick="
if( enabled==1 ) 
{
document.clock.disp.value='';
clearTimeout( TO ); 
enabled = 0;
}
" checked>
关<font color="#FFFF99"> </font> 
<input type="radio" name="rad" value="on" onClick="
if( enabled == 0 ) {
var TO = setTimeout( 'TOfunc()', 1000 );
enabled = 1;
}
">
开<font color="#FFFF99"> </font> 

分析

  • (1)程序定义了一个名为disp的文本框,用于显示文本时钟。其onFocus 属性设置为“ this.blur( )”。
  • (2)程序还定义了“开”和“关”两个单选按钮。“开”按钮的onclick时间调用一段JavaScript 代码。若文本框中没有显示文本时钟,则使用 setTimeout()调用函数TOfunc(),超时时间设置为1000毫秒,表示每隔1秒更新一次。
  • (3)“关”按钮的 onclick 时间调用一段 JavaScript 代码。若文本框中已经显示了文本时钟,则使用“document.clock.disp.value=";”清除文本框中显示的内容。并通过“clealTimeout(To);”取消先前的超时设置。

5.2 不同风格的时间显示

同样是文本时钟,也可以有多种不同的显示方式。本节实例给出了文本时钟的6种不同显示方式。读者可根据自己需求,选择合适的样式使用。

要点

本节代码主要使用了 Date 对象的 getYear 方法、getMonth方法、getDate 方法、getDay方法、getHours 方法、getMinutes方法、getSeconds方法等,主要功能和用法如下。

  • Date 对象用于表示日期和时间。在计算机内部,日期本质上就是一个数值,是自 1970。年 00:00:00开始的相对于某个日期的以毫秒为单位的数值。通过该数值,可以推算出对应的具体日期和时间。
  • getYear( )方法返回 Date 对象实例中的年数。
  • getMonth()方法返回 Date 对象实例中的月份数,取值范围为0~11,比传统表示法的数字小 1。
  • getDate()方法返回 Date 对象实例中的日期数。
  • getDay()方法返回 Date 对象实例中的星期数。
  • getHours()方法返回 Date 对象实例中的小时数。
  • getMinutes()方法返回 Date 对象实例中的分钟数。
  • getSeconds()方法返回 Date 对象实例中的秒数。

<script language="JavaScript">
<!--
function initArray()
{for(i=0;i<initArray.arguments.length;i++)this[i]=initArray.arguments[i];
}
var isnMonths=new initArray("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
var isnDays=new initArray("星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日");
today=new Date();
hrs=today.getHours();
min=today.getMinutes();
sec=today.getSeconds();
clckh=""+((hrs>12)?hrs-12:hrs);
clckm=((min<10)?"0":"")+min;clcks=((sec<10)?"0":"")+sec;
clck=(hrs>=12)?"下午":"上午";
var stnr="";
var ns="0123456789";
var a="";function getFullYear(d)
{yr=d.getYear();if(yr<1000)yr+=1900;return yr;}document.write("<table>");//下面各行分别是一种风格,把不需要的删掉即可
document.write("<TR><TD>风格一:</TD><TD>"+isnDays[today.getDay()]+","+isnMonths[today.getMonth()]+""+today.getDate()+"日,"+getFullYear(today)+"年");
document.write("<TR><TD>风格二:</TD><TD>"+clckh+":"+clckm+":"+clcks+""+clck+"</TD></TR>");
document.write("<TR><TD>风格三:</TD><TD>"+isnDays[today.getDay()]+","+isnMonths[today.getMonth()]+""+today.getDate()+"日,"+getFullYear(today)+"年 "+clckh+":"+clckm+":"+clcks+""+clck+"</TD></TR>");
document.write("<TR><TD>风格四:</TD><TD>"+(today.getMonth()+1)+"/"+today.getDate()+"/"+(getFullYear(today)+"").substring(2,4)+"</TD></TR>");
document.write("<TR><TD>风格五:</TD><TD>"+hrs+":"+clckm+":"+clcks+"</TD></TR>");
document.write("<TR><TD VALIGN=TOP>风格六:</TD><TD>"+today+"</TD></TR>");
document.write("</table>");
//-->
</script>

分析

  • (1)程序首先使用变量isnMonths和isnDays分别定义了12个月的汉语名称和一个星期中7天的汉语名称。
  • (2)随后,通过使用 date()依次获取当前的时、分、秒。对于时、分、秒,只有1位的,增加前置 0,使页面布局更整齐美观。
  • (3)最后,使用了一系列的 document.write()语句,共显示了6种风格的文本时钟,比较简单,参照显示结果,很好理解,这里不再赘述。

5.3 倒计时效果

本节实例给出一个倒计时效果的实现方法。可以根据预先设定的时间进行以秒为单位的倒计时显示。

要点

本节代码主要使用了 Date 构造函数和 Math对象的 foor(n)方法,二者的主要功能和用法如下。

  • 最简单的构造函数是 Date(),以当前的日期和时间初始化一个 Date 对象实例。可以。指定一个自 1970年 00:00:00开始的毫秒值初始化一个对象实例,也可以指定一个格式正确的日期时间字符串,还可以指定年、月、日、时、分、秒、毫秒等多个参数初始化一个 Date 对象实例。例如,“new Date(2006,6,18);”就创建了一个代表 2006年6月18日00:00:00的Date对象实例。
  • Math 对象的 foor(n)方法用于求小于或等于n的整数。其中n是一个数值型或可转换为数值型的常量、变量或表达式。

<script language="JavaScript">
<!--
var DifferenceHour = -1
var DifferenceMinute = -1
var DifferenceSecond = -1
var Tday = new Date("Janu 1, 2222 23:59:59")
var daysms = 24 * 60 * 60 * 1000
var hoursms = 60 * 60 * 1000
var Secondms = 60 * 1000
var micros

http://www.mrgr.cn/p/26172104

相关文章

STM32F1和STM32F4系列DMA的不同之处——对STM32的DMA的工作机制的一些理解

比较STM32F4和STM32F1系列的DMA控制器,区别主要有三:1)增加了DMA流(Stream)的概念;2)限制了两个DMA控制器的数据流向;3)为每个数据流添加了可配置的FIFO缓冲区。 本文逐一比较了以上三种硬件上的改变带来的功能方面的升级和不同。另外,还大胆猜测了STM32的芯片设计者…

Apache Log4j2远程命令执行漏洞

Log4j2框架下的Lookup查询服务提供了{}字段解析功能,传进去的值会被直接解析。在lookup的{}里面构造Payload,调用JNDI服务获取恶意的class对象,造成了远程代码执行。目录漏洞原理复现反弹shell漏洞修复 AApache Log4j2 是一个基于Java的日志记录工具,被广泛应用于业务系统开…

超级计算机精度理论值公式

峰值计算 FLOPS在高性能计算机集群&#xff08;超算&#xff09;上可以使用如下公式计算&#xff1a; 细分到处理器上&#xff0c;以单个 Intel Xeon Gold 6258R 举例&#xff0c;该处理器基于Cascade Lake架构&#xff0c;每个计算单元有2个FMA(fused multiply-add)&#x…

使用collections中的namedtuple来处理数据

前言 tuple在python中是一种不可变的数据结构,和list这种可变的数据结构比较,两者都可以使用索引来读取数值,但是tuple不可变动,因此其不能修改其中的值。 示例:tuple适合存储不需要频繁变动的数据,但是在使用index来读取tuple中的item值时,就会存在问题,问题在于如果i…

韧性增长与库存挑战并存,白酒行业上演“冰与火之歌”?

随着近日五粮液成绩单的公布&#xff0c;白酒板块主要上市公司的业绩均已出炉。 整体来看&#xff0c;虽然2023年白酒行业仍处于深度结构性调整&#xff0c;但相关上市公司业绩似乎并未受过多影响&#xff0c;均表现出喜人的增长态势&#xff0c;这也带动了白酒股的上行。据悉…

JavaGUI - [04] BoxLayout

Swing编程题记部分 一、简介为了简化开发,Swing引入了一个新的布局管理器:BoxLayout。BoxLayout可以在垂直和水平两个方向上摆放GUI组件,BoxLayout提供了如下一个简单的构造器: BoxLayout(Container target,int axis)指定创建基于target容器的BoxLayout布局管理器,该布局管…

交换机基础及stp

一、交换机基础 交换机工作在数据链路层,转发数据帧,隔绝了以太网层的冲突域 1、泛洪未知单播泛洪 广播数据2、转发根据mac地址表进行转发 3、丢弃收到的arp请求中的目的mac地址是发起的接口,则会丢弃 二、stp(生成树协议) 环路引起广播风暴,网络中的主机会受到重复数据帧…

通过API触发airflow的DAG任务

背景 以前编写的DAG都是通过定时触发的,当前有一个场景需要通过手动提交API来触发,这样能够在用户需要的时候,主动触发执行任务,于是就有了这篇内容的摸索。 之前只知道airflow支持通过API来触发任务,但是具体如何操作是真不会,看了官方的API文档,也没找到具体方法,特别…

SpringBoot 使用 @RequiredArgsConstructor(onConstructor_ = @Autowired) 报错解决

若使用 RequiredArgsConstructor(onConstructor_ Autowired) 启动报错&#xff0c;或者爆红可以使用以下方法解决 1. 安装或启用 Lombok插件 2. 检查 Lombok 版本 3. 若 onConstructor_ 爆红&#xff0c; 可能是IDEA中文软件包冲突 4. 若以上还是不行&#xff0c;可以添加…

LSTM-KDE的长短期记忆神经网络结合核密度估计多变量回归区间预测(Matlab)

LSTM-KDE的长短期记忆神经网络结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09; 目录 LSTM-KDE的长短期记忆神经网络结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.LSTM-KDE的长短期…

MySQL8.0新特性

1、新增降序索引 MySQL 5.7&#xff1a;在语法上支持降序索引&#xff0c;但实际上创建的仍然是升序索引 MySQL 8.0&#xff1a;真正支持降序索引&#xff08;只有Innodb存储引擎支持降序索引&#xff09; # MySQL 5.7演示 mysql> create table t1(c1 int,c2 int,index i…

Windows如何安装hadoop

Hadoop是一个开源的分布式计算平台&#xff0c;旨在处理大规模数据的存储和处理。它提供了分布式文件系统&#xff08;HDFS&#xff09;和分布式计算框架&#xff08;MapReduce&#xff09;&#xff0c;使得用户能够在大规模集群上存储和处理数据。Hadoop最初由Apache软件基金会…

HarmonyOS NEXT星河版之模拟图片选择器(下)---使用CustomDialog展示图片

文章目录 一、目标二、开撸2.1 自定义弹窗2.2 主页面事件处理2.3 主页面完整代码 三、小结 一、目标 二、开撸 2.1 自定义弹窗 CustomDialog export struct SinglePreviewDialog {// 弹窗控制器 mustcontroller: CustomDialogController// 展示图片URLimgUrl: ResourceStr b…

某塑料科技公司网络与机房监控运维项目

通过部署智和信通综合监控运维方案实时监控用户网络与机房内大量异构的交换机、路由器、服务器、AC/AP、数据库、防火墙、虚拟机、语音网关、硬盘录像机、行为管理等设备,及时发现并预警潜在问题,从而避免或减少故障带来的负面影响。 某塑料科技公司是由日本知名株式会…

ITIL4 服务价值系统(SVS):一场服务管理的革新之旅

在这个数字化时代,每一家企业都在追求高效的服务管理和卓越的客户体验。今天,我们就来聊一聊ITIL4中的服务价值系统(Service Value System, SVS)——一个让服务管理变得更加直观和高效的框架。 ITIL4服务价值系统:简明解读 SVS的核心理念非常朴素:一切始于客户需求,终于客…

[西湖论剑 2022]easy_api

源码审计 下载附件得war包,bandzip解压一下,审一下源码:这个没啥东西。反序列化入口,但是访问这里是需要绕过的:其实绕过也很简单,双斜杠就绕了:web.xml filter 绕过匹配访问(针对jetty)_jetty权限绕过-CSDN博客看lib里有啥依赖:fastjson1.2.48,这不老熟人了吗.....…

Linux 和 Windows11双系统安装

阅读目录 1.下载Linux系统 2. 制作Linux系统启动盘 3. 电脑分盘 4. 安装Ubuntu系统 5. 安装完成后可能遇到的黑屏问题解决 回到顶部 1.下载Linux系统 下载Linux系统的镜像文件,Linux系统有很多版本,Linux指的是系统内核,笔者下载的是Ubuntu系统,大家可以根据需要下载其他系…

深入解析CSS

层叠、优先级和继承 层叠层叠指的就是这一系列规则。 它决定了如何解决css样式规则冲突,是 CSS 语言的基础。 虽然有经验的开发人员对层叠有大体的了解,但是层叠里有些规则还是容易让人误解。当声明冲突时,层叠会依据三种条件解决冲突:样式表的来源:样式是从哪里来的,包括…

富文本编辑器CKEditor4简单使用-08(段落首行缩进插件 + 处理粘贴 Microsoft Word 中的内容后保持原始内容格式(包括首行缩进))

富文本编辑器CKEditor4简单使用-08&#xff08;段落首行缩进插件 处理粘贴 Microsoft Word 中的内容后保持原始内容格式&#xff08;包括首行缩进&#xff09;&#xff09; 1. 缩进&#xff0c;特殊方式处理——修改原工具栏里的增加缩进量2 缩进&#xff0c;插件处理2.1 下载…

[Java EE] 多线程(六):线程池与定时器

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (90平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …