`
xinlingwuyu
  • 浏览: 138384 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

类似于Java日期格式化的JavaScript实现

阅读更多

  1/**//**
  2@author:Pancras
  3@version:1.01
  4@date:2008-03-02
  5@methods:
  6    DateUtil.getDate(year,month,day)        输入参数为年、月、日,返回一个JS的Date型对象
  7    DateUtil.formateDate(pattern,date)        输入参数一个是格式化字符串,比如"yyyy-MM-dd",和JS日期对象,输出格式化后的日期字符串(基本上和Java的格式化类似)
  8    DateUtil.formateDateTime(pattern,date)    参数类型同上,但是该方法是在要格式化包含时间的时候使用,如"yyyy-MM-dd HH-mm-ss"
  9    DateUtil.isLeapYear(date)                输入一个JS日期型参数,判断该日期所在的年是不是闰年
 10**/   
 11   
 12    function DateUtil(){
 13        alert("请不要new这个对象,所有方法都是可以通过DateUtil.方法名来调用");
 14    }
 15//-------------------------------------------
 16    //定义类方法getDate(year,month,day)创建对应的日期对象
 17    function getDate(year,month,day)
 18    {
 19        var date = new Date();
 20        if(year)
 21        {
 22            date.setYear(year);
 23        }
 24        if(month)
 25        {
 26            date.setMonth(month-1);
 27        }
 28        if(day)
 29        {
 30            date.setDate(day);
 31        }
 32        return date;
 33    }
 34    DateUtil.getDate=getDate;
 35//-------------------------------------------
 36    //定义日期时间格式化
 37    DateUtil.yearPattern = [new RegExp("y{4}","g"),new RegExp("y{3}","g"),new RegExp("y{2}","g")];
 38    DateUtil.monthPattern = [new RegExp("M{2}","g"),new RegExp("M{1}","g")];
 39    DateUtil.datePattern = [new RegExp("d{2}","g"),new RegExp("d{1}","g")];
 40    DateUtil.hourPattern=[new RegExp("H{2}","g"),new RegExp("H{1}","g"),new RegExp("h{2}","g"),new RegExp("h{1}","g")];
 41    DateUtil.minutePattern=[new RegExp("m{2}","g"),new RegExp("m{1}","g")];
 42    DateUtil.secondPattern=[new RegExp("s{2}","g"),new RegExp("s{1}","g")];
 43    //格式化年
 44    function formatYear(pattern,year)
 45    {           
 46        var result = pattern.match(DateUtil.yearPattern[0]);
 47        if(result!=null){
 48            pattern = pattern.replace(DateUtil.yearPattern[0],year);
 49            return pattern;
 50        }else {
 51   
 52            //不允许匹配成yyy
 53            result = pattern.match(DateUtil.yearPattern[1]);
 54            if(result!=null){
 55                throw "Unknown pattern:"+pattern;
 56               
 57            }else {
 58                result = pattern.match(DateUtil.yearPattern[2]);
 59                if(result!=null)
 60                {
 61                    pattern = pattern.replace(DateUtil.yearPattern[2],(""+year).substring(2,4));
 62                    return pattern;
 63                }
 64            }
 65        }
 66    }
 67    //格式化月
 68    function formatMonth(pattern,month)
 69    {
 70       
 71        var result = pattern.match(DateUtil.monthPattern[0]);
 72        if(result!=null){
 73            if(month<10)
 74            {
 75                month = "0"+month;
 76            }
 77            pattern = pattern.replace(DateUtil.monthPattern[0],month);
 78            return pattern;
 79        }else
 80        {
 81            result = pattern.match(DateUtil.monthPattern[1]);
 82            if(result!=null){
 83                pattern = pattern.replace(DateUtil.monthPattern[1],month);
 84                return pattern;
 85            }
 86            else{
 87                throw "Unknown pattern:"+pattern;
 88            }
 89           
 90        }
 91    }
 92    //格式化日期
 93    function formatDay(pattern,day)
 94    {
 95           
 96        var result = pattern.match(DateUtil.datePattern[0]);
 97        if(result!=null){
 98            if(day<10)
 99            {
100                day = "0"+day;
101            }
102            pattern = pattern.replace(DateUtil.datePattern[0],day);
103            return pattern;
104        }else
105        {
106            result = pattern.match(DateUtil.datePattern[1]);
107            if(result!=null){
108                pattern = pattern.replace(DateUtil.datePattern[1],day);
109                return pattern;
110            }
111            else{
112                throw "Unknown pattern:"+pattern;
113            }
114           
115        }
116    }
117    //格式化小时
118    function formatHour(pattern,hour)
119    {       
120            var result = pattern.match(DateUtil.hourPattern[0]);
121            if(result!=null){
122                if(hour<10)
123                {
124                    hour = "0"+hour;
125                }
126                pattern = pattern.replace(DateUtil.hourPattern[0],hour);
127                return pattern;
128            }else
129            {
130                result = pattern.match(DateUtil.hourPattern[1]);
131                if(result!=null){
132                    pattern = pattern.replace(DateUtil.hourPattern[1],hour);
133                    return pattern;
134                }
135                else{
136                        result = pattern.match(DateUtil.hourPattern[2]);
137                        if(result!=null){
138                            if(hour<10)
139                            {
140                                hour = "0"+hour;
141                            }
142                            if(hour>12)
143                            {
144                                 hour = hour-12;
145                            }
146                            pattern = pattern.replace(DateUtil.hourPattern[2],hour);
147                            return pattern;
148                        }else{
149                            result = pattern.match(DateUtil.hourPattern[3]);
150                            if(result!=null){
151                                if(hour>12)
152                                {
153                                     hour = hour-12;
154                                }
155                                pattern = pattern.replace(DateUtil.hourPattern[3],hour);
156                                return pattern;
157                            }else{
158                                throw "Unknown pattern:"+pattern;
159                            }
160                        }
161               
162                }
163            }
164    }
165    //格式化分钟
166    function formatMinute(pattern,minute)
167    {
168           
169        var result = pattern.match(DateUtil.minutePattern[0]);
170        if(result!=null){
171            if(minute<10)
172            {
173                minute = "0"+minute;
174            }
175            pattern = pattern.replace(DateUtil.minutePattern[0],minute);
176            return pattern;
177        }else
178        {
179            result = pattern.match(DateUtil.minutePattern[1]);
180            if(result!=null){
181                pattern = pattern.replace(DateUtil.minutePattern[1],minute);
182                return pattern;
183            }
184            else{
185                throw "Unknown pattern:"+pattern;
186            }
187           
188        }
189    }
190    //格式化秒
191    function formatSecond(pattern,second)
192    {
193           
194        var result = pattern.match(DateUtil.secondPattern[0]);
195        if(result!=null){
196            if(second<10)
197            {
198                second = "0"+second;
199            }
200            pattern = pattern.replace(DateUtil.secondPattern[0],second);
201            return pattern;
202        }else
203        {
204            result = pattern.match(DateUtil.secondPattern[1]);
205            if(result!=null){
206                pattern = pattern.replace(DateUtil.secondPattern[1],second);
207                return pattern;
208            }
209            else{
210                throw "Unknown pattern:"+pattern;
211            }
212           
213        }
214    }
215    function formateDate(pattern,date)
216    {
217        var oldpattern = pattern;
218        try{
219            pattern = formatYear(pattern,DateUtil.getYear(date));
220            pattern = formatMonth(pattern,DateUtil.getMonth(date));
221            pattern = formatDay(pattern,DateUtil.getDay(date));
222            return pattern;
223        }catch(err){
224            if(err.match("Unknown pattern")){
225                alert("Unknown pattern:"+oldpattern);
226            }else{
227                alert(err);
228            }
229           
230        }   
231    }
232    function formateDateTime(pattern,date)
233    {
234        var oldpattern = pattern;
235        try{
236            pattern = DateUtil.formateDate(pattern,date);
237            pattern = formatHour(pattern,date.getHours());
238            pattern = formatMinute(pattern,date.getMinutes());
239            pattern = formatSecond(pattern,date.getSeconds());
240            return pattern;
241        }catch(err){
242            if(err.match("Unknown pattern")){
243                alert("Unknown pattern:"+oldpattern);
244            }else{
245                alert(err);
246            }
247           
248        }   
249    }
250
251    DateUtil.formateDate = formateDate;
252    DateUtil.formateDateTime = formateDateTime;
253//-------------------------------------------
254    //是不是闰年
255    function isLeapYear(date)
256    {
257        var year = DateUtil.getYear();
258        if(year%100==0)
259        {
260            if(year%400==0)
261            {
262                return true;
263            }
264        }   
265        if(year%100!=0)
266        {
267            if(year%4==0)
268            {
269                return true;
270            }
271        }   
272        return false;
273    }
274
275    DateUtil.isLeapYear = isLeapYear;

分享到:
评论

相关推荐

    javascript 日期数字文本格式化

    另一个可能用到的库是`02.bizplant-util-NumberFormat.js`,从文件名推测,这可能是用于数字格式化的工具,提供了类似于Java的`NumberFormat`接口的功能。 `BigDecimal.js`通常用于处理大数运算,避免了JavaScript...

    阿里与唯品会代码格式化样式.rar

    P3CFormatter不仅适用于Java代码,还可能支持其他语言,如JavaScript、Python等,具体取决于插件的兼容性。 另一方面,“vjtools-standard-formatter”可能是唯品会的自定义代码格式化配置,它可能包含唯品会内部的...

    JavaScript实现的SimpleDateFormat

    这个“JavaScript实现的SimpleDateFormat”可能是为了弥补这一空白,提供一个与Java相似的API来格式化和解析日期。 `SimpleDateFormat`在Java中是一个强大的工具,允许我们按照自定义的模式来格式化日期。例如,...

    Date格式化

    这个例子会输出类似于"2022-04-15 14:30:45"的格式化日期。 在处理跨时区的问题时,我们可能需要使用`java.time.ZonedDateTime`(Java)、`toLocaleString`的`timeZone`参数(JavaScript)或`pytz`库(Python)来...

    格式化时间可能用到的各种JS

    如`date.format.js`, `DateFormat.js`, `Format.js`, `SimpleDateFormat.js`, `jsjava_2_0`, `jsjava_2_2_bin`,这些文件可能是不同的JavaScript库或函数,用于实现日期和时间的格式化功能。 1. **Date对象**: ...

    实例017——获取当前的日期、时间并格式化输出.zip

    2. **Java**: Java中,`java.time`包提供了获取和格式化日期时间的功能。`LocalDateTime.now()`获取当前日期和时间,`DateTimeFormatter`类则用于格式化。例如: ```java import java.time.LocalDateTime; import...

    JavaScript万年历.rar

    在Java Swing程序中,可能有一个类似日历选择器的组件,但它是用Java而不是JavaScript实现的,通常适用于桌面应用程序。 总的来说,JavaScript万年历是网页应用中常用的日期选择组件,通过灵活的JavaScript和HTML...

    json格式化工具

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但也使用了类似于C家族语言的习惯,包括C、C++、C#、Java、JavaScript、Perl、Python等。JSON易于人阅读和编写,...

    JavaScript级联出生日期年月日出生地

    在JavaScript中,处理日期可以选择使用内置的`Date`对象,或者利用第三方库如Moment.js,来更灵活地处理和格式化日期。 ### 5. 数据验证和用户输入处理 在处理出生日期和出生地这类敏感信息时,确保数据的有效性和...

    java源码包---java 源码 大量 实例

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器地址  ...

    Java Internationalization国际化教程

    - **DateFormat**: 提供日期和时间的格式化,有`SimpleDateFormat`(可自定义格式)和`DateTimeFormatter`(Java 8引入,更强大)。 - **NumberFormat**: 用于货币、数字、百分比等的格式化,包括`DecimalFormat`...

    JavaScript实现网页树形结构

    本主题将探讨如何利用JavaScript实现这样的树形结构,并结合Java进行交互,以创建类似于Windows XP系统资源管理器的用户体验。我们将深入研究相关技术、实现步骤以及可能遇到的挑战。 首先,JavaScript作为客户端...

    java小工具

    4. **XJad**: 在早期的Java平台上,JAD(Java Application Decompile)是用于反编译JAR文件的工具,它能将Java字节码转换为一种类似于源代码的表示形式。虽然现代的Java开发主要依赖于更高级的反编译器,但在研究旧...

    javascript日期对象格式化为字符串的实现方法

    `formatDate`函数则是实现日期格式化的关键。它接收一个Date对象`datetime`和一个自定义的日期格式字符串`format`。此函数首先定义了一个配置对象`cfg`,用于存储月份和星期的全拼或简拼。接着,创建了一个`values`...

    java制作标准化考试系统

    综上所述,制作一个Java标准化考试系统涉及多个层面的技术和知识,从后端的数据库设计、Java编程到前端的用户交互,都需要精心设计和实现。通过不断迭代和优化,我们可以构建出一个高效、稳定且功能丰富的考试平台。

    java开源包4

    业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH...

    格式化字符串格式化字符串格式化字符串

    早期的`%`操作符类似于C语言中的printf风格,例如: ```python name = "Alice" age = 25 print("My name is %s and I am %d years old." % (name, age)) ``` 新的f-string(格式化字符串字面量)是Python 3.6...

    日期控制支持火狐 ie opera等多浏览器(java和ASPnet 通用)

    标题提到的资源提供了对火狐(Firefox)、IE(Internet Explorer)以及Opera等多浏览器支持的日期控件解决方案,适用于Java和ASP.NET两种后端技术。 1. **跨浏览器兼容性**: - **火狐**:Firefox使用Gecko内核,...

    纯javascript实现json与对象的互相转换项目

    本项目专注于纯JavaScript实现JSON(JavaScript Object Notation)与JavaScript对象之间的互相转换,这对于数据的存储、传输以及序列化至关重要。JSON作为一种轻量级的数据交换格式,因其易读易写、机器可读性高而被...

Global site tag (gtag.js) - Google Analytics