JavaScript】用JS写一个格式化时间的方法

2021-01-05 10:56发布

11条回答
像风没有归宿
2楼 · 2021-01-05 15:17

实体类中添加时间转换注解(注意时区问题)

1
2
3
4
5
/**
  * 开始时间
  */
 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
 private Date startTime;


Sophia
3楼 · 2021-01-05 15:58

参数: formatStr 格式化串 y年,m月,d日,h小时,i分钟,s秒钟 缺省值 "y-m-d h:i:s"

fdate 要格式化的时间(时间戳)UTC秒数 缺省值 当前时间

实例: formatDate() 当前时间默认格式 如 2011-4-12 12:51:12

formatDate('y/m/d', 2132132131) 某时间格式为 年月日 如 2010/12/5

function formatDate(formatStr, fdate)

{

var fTime, fStr = 'ymdhis';

if (!formatStr)

formatStr= "y-m-d h:i:s";

if (fdate)

fTime = new Date(fdate);

else

fTime = new Date();

var formatArr = [

fTime.getFullYear().toString(),

(fTime.getMonth()+1).toString(),

fTime.getDate().toString(),

fTime.getHours().toString(),

fTime.getMinutes().toString(),

fTime.getSeconds().toString()

]

for (var i=0; i

{

formatStr = formatStr.replace(fStr.charAt(i), formatArr[i]);

}

return formatStr;

}

aijingda
4楼 · 2021-01-05 18:14

我们都知道在Java和PHP语言中,有专门用于格式化日期对象的类和函数,例如Java中的DateFormat等等,通过这些类和函数,我们可以方便的将一个日期对象按照格式的要求输出为字符串,例如对于同一个日期2006年12月25日,需要的显示格式可能如下:

2010年12月25日,2010-12-25,12-25-2010等等。

在Javascript之中,日期对象是Date,那么如何将一个日期对象按照定制的格式进行输出呢?

Date对象有有四个内置方法,用于输出为字符串格式,分别为:

  1. toGMTString,将一个日期按照GMT格式显示

  2. toLocaleString,将一个日期按照本地操作

  3. toLocaleDateString,按照本地格式显示一个日期对象的日期部分

  4. toLocaleTimeString,按照本地格式显示一个日期对象的时间部分

尽管Javascript的Date对象中内置提供了这些输出为字符串的方法,但是这些字符串不是我们来控制格式的,因此如果我们需要我们自己定制的特殊格式,那么又该怎么办呢?

不用着急,JsJava中提供了专用的类,专门对日期进行指定格式的字符串输出,你可以下载JsJava-1.0.zip,引入其中的src/jsjava/text/DateFormat.js,或者直接引入jslib/jsjava-1.0.js,样例代码如下:

1var df=new DateFormat();
2df.applyPattern("yyyy-MM-dd hh:mm:ss");
3var date=new Date(2010,3,30,10,59,51);
4var str=df.format(date);
5[removed](str);//显示结果为:2010-04-30 10:59:51

通过上面的例子你可以看出,你需要做的就是指定pattern,那么pattern中yyyy、MM等都表示什么意思呢?如果你学习过Java的日期格式化,那么你应该知道,那都是占位符,这些占位符都具有特殊的函数,例如y表示年,yyyy表示四个数字的年份。

效果演示

格式化的日期对象为:

日期对象为:Tue Jan 05 2021 18:13:41 GMT+0800 (中国标准时间)

JavaScript Code

01[removed]"text/javascript">
02Date.prototype.format = function(format)
03{
04    var o = {
05    "M+" this.getMonth()+1, //month
06    "d+" this.getDate(),    //day
07    "h+" this.getHours(),   //hour
08    "m+" this.getMinutes(), //minute
09    "s+" this.getSeconds(), //second
10    "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
11    "S" this.getMilliseconds() //millisecond
12    }
13
14    if(/(y+)/.test(format))
15    {
16        format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length));
17    }
18
19    for(var in o)
20    {
21        if(new RegExp("("+ k +")").test(format))
22        {
23            format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
24        }
25    }
26    return format;
27}
28
29var d = new Date();
30[removed]('日期对象为:');
31[removed](d);
32var str = d.format('yyyy-MM-dd');
33var today = document.getElementById("todayButton");
34today.value = str;
35
36[removed]


是你的小甜心呀
5楼 · 2021-01-06 09:50

刚项目中需要使用js格式化输出时间,发现js中并没有现成的类似PHP中date()的函数。于是用js模拟一个方便以后使用,代码如下:

格式化时间

参数: formatStr 格式化串 y年,m月,d日,h小时,i分钟,s秒钟 缺省值 "y-m-d h:i:s"

fdate 要格式化的时间(时间戳)UTC秒数 缺省值 当前时间

实例: formatDate() 当前时间默认格式 如 2011-4-12 12:51:12

formatDate('y/m/d', 2132132131) 某时间格式为 年月日 如 2010/12/5

function formatDate(formatStr, fdate)

{

var fTime, fStr = 'ymdhis';

if (!formatStr)

formatStr= "y-m-d h:i:s";

if (fdate)

fTime = new Date(fdate);

else

fTime = new Date();

var formatArr = [

fTime.getFullYear().toString(),

(fTime.getMonth()+1).toString(),

fTime.getDate().toString(),

fTime.getHours().toString(),

fTime.getMinutes().toString(),

fTime.getSeconds().toString()

]

for (var i=0; i

{

formatStr = formatStr.replace(fStr.charAt(i), formatArr[i]);

}

return formatStr;

}


我是大脸猫
6楼 · 2021-01-06 11:52

1.项目中时间返回值,很过时候为毫秒值,我们需要转换成 能够看懂的时间的格式;

  例如:

         yyyy-MM-dd HH:mm:ss

 

2.处理方法(处理方法有多种,可以传值到前端处理,也可以后台可以好之后再传递到页面)

    方法一:实体类中添加时间转换注解(注意时区问题)

   

/**
     * 开始时间     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")    private Date startTime;

     

     方法二:js处理

  

复制代码

{
                    field : 'crtTime',
                    title : '创建时间',
                    width : 100,
                    sortable :true,
                    align : 'center',
                    formatter : crtTimeFtt
                },

复制代码

 

  

复制代码

function crtTimeFtt(val, row) {    if (val != null) {
            var date = new Date(val);            return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
        }
}

复制代码

 

        方法三:JS处理(创建公共类方法)

       

复制代码

/**************************************时间格式化处理************************************/function dateFtt(fmt,date)   
{ //author: meizz   
  var o = {   
    "M+" : date.getMonth()+1,                 //月份   
    "d+" : date.getDate(),                    //日   
    "h+" : date.getHours(),                   //小时   
    "m+" : date.getMinutes(),                 //分   
    "s+" : date.getSeconds(),                 //秒   
    "q+" : Math.floor((date.getMonth()+3)/3), //季度   
    "S"  : date.getMilliseconds()             //毫秒     };   
  if(/(y+)/.test(fmt))   
    fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));   
  for(var k in o)   
    if(new RegExp("("+ k +")").test(fmt))   
  fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));   
  return fmt;   
}

复制代码

     相应JS文件里面的引用

     

//创建时间格式化显示function crtTimeFtt(value,row,index){
    var crtTime = new Date(value);    return top.dateFtt("yyyy-MM-dd hh:mm:ss",crtTime);//直接调用公共JS里面的时间类处理的办法     }

 

 

 

 

 3.总结:实现时间转换的方法有多种,怎样方便,达到项目的要求,就可,欢迎留言。


大冬瓜
7楼 · 2021-01-06 17:14

在 Date 的原型链上增加一个函数 format ,用来格式化时间。

yy123456
8楼 · 2021-01-07 17:29

参数: formatStr 格式化串 y年,m月,d日,h小时,i分钟,s秒钟 缺省值 "y-m-d h:i:s"

fdate 要格式化的时间(时间戳)UTC秒数 缺省值 当前时间


py大白
9楼 · 2021-01-08 09:34

参数: formatStr 格式化串 y年,m月,d日,h小时,i分钟,s秒钟 缺省值 "y-m-d h:i:s"

fdate 要格式化的时间(时间戳)UTC秒数 缺省值 当前时间

实例: formatDate() 当前时间默认格式 如 2011-4-12 12:51:12

formatDate('y/m/d', 2132132131) 某时间格式为 年月日 如 2010/12/5

function formatDate(formatStr, fdate)

{

var fTime, fStr = 'ymdhis';

if (!formatStr)

formatStr= "y-m-d h:i:s";

if (fdate)

fTime = new Date(fdate);

else

fTime = new Date();

var formatArr = [

fTime.getFullYear().toString(),

(fTime.getMonth()+1).toString(),

fTime.getDate().toString(),

fTime.getHours().toString(),

fTime.getMinutes().toString(),

fTime.getSeconds().toString()

]

for (var i=0; i

{

formatStr = formatStr.replace(fStr.charAt(i), formatArr[i]);

}

return formatStr;

}


相关问题推荐

  • 回答 8

    向一个对象数组里面添加新的属性var arry= [{a:11,b:22,c:33,d:44},{a:11,b:0,c:0,d:44},{a:11,b:22,c:99,d:99}];var arry2=[];arry.map(((item, index)=> {arry2.push(Object.assign({},item,{mess1:item.c,mess2:item.d}))}))cons...

  • 回答 2

    我觉得getTopWindow() 应该是他自己写的函数 mask  应该是getTopWindow()函数中 return 出的一个什么玩意show()  jQuery的显示

  • 回答 9

    如图所示

  • 回答 12

    1、原型对象也是普通的对象,是对象一个自带隐式的 __proto__ 属性,原型也有可能有自己的原型,如果一个原型对象的原型不为 null 的话,我们就称之为原型链 2、 原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链...

  • 回答 6

    使用VS code对JS进行Debug,需要安装一个插件,这个插件是根据你所使用的浏览器来的,不同浏览器对应插件不同,以下是插件对应情况,下载完相应的插件以后还要下载一个live server在浏览器下查看你界面运行效果,记得在到设置里修改下live server的端口号,然...

  • 回答 8
    已采纳

    没有基础,是可以学Java的,在网上也能找到很多免费的视频、学习资料等资源,只不过想要光靠自己摸索学透Java并不容易,最好是找一个比较靠谱的有实训的培训机构。不过,我给你点建议:1.脑子里要有编程思维,2.学习态度要有,3.了解了基本概念后,从图形界面...

  • 回答 7

    假设文本框的id=text1js:document.getElementById(text1).value = 测试;//即可

  • 回答 2

    这两个事件都是在js原生开发时经常会用到的,比如需要对页面dom进行动态处理,这时就需要用到DOMContentLoaded和[removed]事件,大家都知道,就是在dom构建完毕后,才可以对dom元素进行操作,否则会获取不到相应的dom元素,但是DOMContentLoaded和[removed]还...

  • 回答 11

    基本概念CookieCookie 是小甜饼的意思。顾名思义,cookie 确实非常小,它的大小限制为4KB左右。它的主要用途有保存登录信息,比如你登录某个网站市场可以看到记住密码,这通常就是通过在 Cookie 中存入一段辨别用户身份的数据来实现的。localStoragelocalStor...

  • 回答 2

    在vscode 头疼的问题是 用浏览器查看网页!会是以文件夹的方式打开的!  我遇到这个问题 我还重新配置了Apache    ! 但是现在可以解决:使用vscode  ==================== 打开cmd   : 在cmd 控制台中输入  :   1.运行cnpm install live-server...

  • 回答 1

    在进行对象之间的合并的时候,就会使用到extend方法进行合并语法结构:$.extend(true,{},对象1,对象2...)但是这里需要考虑一个问题,如果对象间有相同的属性名,就会涉及到哪一个对象和哪一个对象的值覆盖合并的问题,如果对象中的属性值还是一个对象的话,那...

  • 回答 5
    已采纳

    先说下要实现什么功能,比如:限制图片大小不能超过30K,宽高为121x75上面需求提了,然后我直接把代码给你放出来,可以照着下面代码敲一遍试试就知道怎么限制图片宽高了 $(#picFile4).on(change,function(){ var imgFile = this.files[0]; va...

  • 回答 3

    用python爬取近30天百度指数代码均转载,如下:#1.登录url = ‘http://index.baidu.com/’driver = webdriver.Chrome(executable_path=‘C:/Program Files(x86)/Google/Chrome/Application/chromedriver.exe’)driver.get(url)cookieList = [......

  • 回答 7

    基本类型基本类型分为以下六种:string(字符串)boolean(布尔值)number(数字)symbol(符号)null(空值)undefined(未定义)注意:string 、number 、boolean 和 null  undefined 这五种类型统称为原始类型(Primitive),表示不能再细分下去的基本类...

  • 回答 5

    实例中包含加、减、乘、除四种运算,由于先乘和除的优先级别高,所以乘和除将首先被运算,接下来是加和减运算。乘和除优先级相同,所以左边的乘法将被先执行,然后是除法,接下来按从左到右的顺序进行加减运算...

没有解决我的问题,去提问