`
xyzroundo
  • 浏览: 509042 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

Javascript 解析,格式化日期

    博客分类:
  • js
阅读更多
来源:http://gwbasic.iteye.com
/*  
  将String类型解析为Date类型.  
  parseDate('2006-1-1') return new Date(2006,0,1)  
  parseDate(' 2006-1-1 ') return new Date(2006,0,1)  
  parseDate('2006-1-1 15:14:16') return new Date(2006,0,1,15,14,16)  
  parseDate(' 2006-1-1 15:14:16 ') return new Date(2006,0,1,15,14,16);  
  parseDate('2006-1-1 15:14:16.254') return new Date(2006,0,1,15,14,16,254)  
  parseDate(' 2006-1-1 15:14:16.254 ') return new Date(2006,0,1,15,14,16,254)  
  parseDate('不正确的格式') retrun null  
*/  
function parseDate(str){   
  if(typeof str == 'string'){   
    var results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) *$/);   
    if(results && results.length>3)   
      return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]));    
    results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/);   
    if(results && results.length>6)   
      return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]),parseInt(results[4]),parseInt(results[5]),parseInt(results[6]));    
    results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/);   
    if(results && results.length>7)   
      return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]),parseInt(results[4]),parseInt(results[5]),parseInt(results[6]),parseInt(results[7]));    
  }   
  return null;   
}   
  
/*  
  将Date/String类型,解析为String类型.  
  传入String类型,则先解析为Date类型  
  不正确的Date,返回 ''  
  如果时间部分为0,则忽略,只返回日期部分.  
*/  
function formatDate(v){   
  if(typeof v == 'string') v = parseDate(v);   
  if(v instanceof Date){   
    var y = v.getFullYear();   
    var m = v.getMonth() + 1;   
    var d = v.getDate();   
    var h = v.getHours();   
    var i = v.getMinutes();   
    var s = v.getSeconds();   
    var ms = v.getMilliseconds();      
    if(ms>0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s + '.' + ms;   
    if(h>0 || i>0 || s>0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s;   
    return y + '-' + m + '-' + d;   
  }   
  return '';   
}  

/*
  将String类型解析为Date类型.
  parseDate('2006-1-1') return new Date(2006,0,1)
  parseDate(' 2006-1-1 ') return new Date(2006,0,1)
  parseDate('2006-1-1 15:14:16') return new Date(2006,0,1,15,14,16)
  parseDate(' 2006-1-1 15:14:16 ') return new Date(2006,0,1,15,14,16);
  parseDate('2006-1-1 15:14:16.254') return new Date(2006,0,1,15,14,16,254)
  parseDate(' 2006-1-1 15:14:16.254 ') return new Date(2006,0,1,15,14,16,254)
  parseDate('不正确的格式') retrun null
*/
function parseDate(str){
  if(typeof str == 'string'){
    var results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) *$/);
    if(results && results.length>3)
      return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3])); 
    results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/);
    if(results && results.length>6)
      return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]),parseInt(results[4]),parseInt(results[5]),parseInt(results[6])); 
    results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/);
    if(results && results.length>7)
      return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]),parseInt(results[4]),parseInt(results[5]),parseInt(results[6]),parseInt(results[7])); 
  }
  return null;
}

/*
  将Date/String类型,解析为String类型.
  传入String类型,则先解析为Date类型
  不正确的Date,返回 ''
  如果时间部分为0,则忽略,只返回日期部分.
*/
function formatDate(v){
  if(typeof v == 'string') v = parseDate(v);
  if(v instanceof Date){
    var y = v.getFullYear();
    var m = v.getMonth() + 1;
    var d = v.getDate();
    var h = v.getHours();
    var i = v.getMinutes();
    var s = v.getSeconds();
    var ms = v.getMilliseconds();   
    if(ms>0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s + '.' + ms;
    if(h>0 || i>0 || s>0) return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s;
    return y + '-' + m + '-' + d;
  }
  return '';
}



分享到:
评论

相关推荐

    JavaScript格式化日期

    在处理非标准日期格式时,我们需要先解析字符串,然后利用`Date`对象的方法进行操作,最后再进行适当的格式化。在这个例子中,我们没有直接使用`replace()`,而是采取了更灵活和精确的方式来实现日期的转换。对于更...

    格式化数据库日期JS

    // 格式化日期 return formatDateTime(date); } ``` 这个函数首先调用`parseJsonDate`函数将输入的JSON日期字符串转换为`Date`对象,然后通过`formatDateTime`函数将该对象格式化为我们所需的日期格式。 #### ...

    javascript中Date format(js日期格式化)方法小结.docx

    ### JavaScript中的Date Format(JS日期格式化)方法详解 #### 概述 在日常的Web开发工作中,我们经常需要处理日期和时间相关的数据。JavaScript 的 `Date` 对象提供了多种方法来获取和设置日期时间,但原生 API 并...

    moment轻量级JavaScript库用于日期解析验证操作和格式化

    它提供了丰富的功能,包括日期解析、验证、格式化以及日期的数学运算等。由于其轻量级和强大的特性,moment.js在Web开发中被广泛采用,尤其在处理复杂的前端日期逻辑时。 1. **日期解析**: moment.js允许开发者...

    JavaScript时间格式化插件,返回指定字符串

    例如,可以使用`format(new Date(), 'yyyy-MM-dd HH:mm:ss')`来格式化日期。 5. **luxon**: luxon是Intl.DateTimeFormat的现代化替代品,它提供了更强的类型安全性和更好的错误处理。使用`DateTime.now().to...

    时间日期JavaScript 选择时间日期

    JavaScript提供了一个内置的`Date`对象,可以用来创建、操作和格式化日期。你可以通过`new Date()`来创建一个日期实例,或者通过传递年、月、日等参数来初始化特定日期。`Date`对象提供了丰富的API,如`getFullYear...

    JavaScript实现字符串与日期的相互转换及日期的格式化_.docx

    下面将详细介绍如何使用JavaScript实现字符串与日期的相互转换以及日期的格式化。 首先,我们来看如何将字符串转换为日期对象。在提供的代码中,有一个名为`stringToDate`的函数,它接受一个形如"yyyy-MM-dd"格式的...

    amf解析,json解析 格式化

    AMF(Action Message Format)是Adobe公司开发的一种二进制数据序列化格式,常用于Flash与服务器之间的数据交换。...掌握这两种技术,以及相关的解析和格式化工具,将对提升你的开发能力大有裨益。

    json日期格式化

    总结,JSON日期格式化涉及理解JSON的非标准化日期表示,使用JavaScript内置或外部工具进行日期解析和格式化。通过选择合适的API或库,我们可以根据需求灵活地处理JSON中的日期字符串,使其符合我们的展示或存储需求...

    在JavaScript中将日期解析为Json

    JavaScript的`Date`对象提供了丰富的API来创建、操作和格式化日期。例如: - `new Date()`:创建当前日期和时间的实例。 - `Date.now()`:获取自1970年1月1日以来的毫秒数。 - `date.getFullYear()`、`date.getMonth...

    JavaScript自定义日期格式化函数详细解析

    为了格式化日期,我们需要将这些方法获取到的值组合成我们想要的字符串格式。 在自定义日期格式化函数时,有两种常见的实现方式:扩展`Date.prototype`或创建独立的格式化函数。扩展`Date.prototype`虽然方便使用,...

    javascript日期格式化示例分享

    在格式化日期时,往往需要对这些值进行调整,以符合特定的文化或商业规则,比如月份和日期的0填充、使用12小时制或24小时制等。 在实际应用中,格式化日期是Web开发中非常常见的需求。例如,在用户界面显示当前日期...

    JavaScript日期操作技术解析与实践应用

    主要内容包括获取当前一周的所有日期、获取当月所有日期、获取当月的总天数、计算两个日期之间的差异、获取未来若干天的具体日期、获取星期名称以及格式化日期字符串的方法。此外,还介绍了一些需要注意的地方,如...

    javascript格式化日期时间函数

    JavaScript是一种广泛应用于前端开发的编程语言,其中一个常见的任务是在Web应用中格式化日期和时间。为了帮助开发者高效完成这一任务,许多JavaScript库提供了日期时间格式化的函数。在本例中,我们将探讨一个...

    JS格式化日期

    ### JS格式化日期知识点 #### 一、概述 在JavaScript中,处理日期是常见的需求之一。对于日期格式化的实现,通常需要考虑到不同浏览器之间的兼容性问题。本文将介绍一种简单的日期格式化方法,并通过示例代码展示...

    解析、验证、操作和显示javascript中的日期.zip

    `moment.js`提供了一种标准且强大的方式来解析、验证、操作和格式化日期。 例如,你可以用`moment('2022-12-31').isValid()`来验证日期是否有效,`moment().add(1, 'year')`将当前日期增加一年,`moment().subtract...

    js中格式化日期时间型数据函数代码.docx

    #### 二、格式化日期时间的函数设计 接下来,我们将重点介绍如何编写一个灵活且强大的日期时间格式化函数。该函数能够接受不同的格式化模式,并根据这些模式输出相应的日期时间字符串。 ```javascript // 扩展Date...

    Javascript将JSON日期格式化

    1. **无时分秒的日期格式化** ```javascript function jsonDateFormat(jsonDate) { try { var date = new Date(parseInt(jsonDate.replace("/Date(", "").replace(")/", ""), 10)); var month = date.getMonth...

Global site tag (gtag.js) - Google Analytics