- 浏览: 13729769 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
Although JavaScript provides a bunch of methods for getting and setting parts of a date object, it lacks a simple way to format dates and times according to a user-specified mask. There are a few scripts out there which provide this functionality, but I've never seen one that worked well for me… Most are needlessly bulky or slow, tie in unrelated functionality, use complicated mask syntaxes that more or less require you to read the documentation every time you want to use them, or don't account for special cases like escaping mask characters within the generated string.
When choosing which special mask characters to use for my JavaScript date formatter, I looked at PHP's date function and ColdFusion's discrete dateFormat and timeFormat functions. PHP uses a crazy mix of letters (to me at least, since I'm not a PHP programmer) to represent various date entities, and while I'll probably never memorize the full list, it does offer the advantages that you can apply both date and time formatting with one function, and that none of the special characters overlap (unlike ColdFusion where m and mm mean different things depending on whether you're dealing with dates or times). On the other hand, ColdFusion uses very easy to remember special characters for masks.
With my date formatter, I've tried to take the best features from both, and add some sugar of my own. It did end up a lot like the ColdFusion implementation though, since I've primarily used CF's mask syntax.
Before getting into further details, here are some examples of how this script can be used:
核心代码:
/* * Date Format 1.2.3 * (c) 2007-2009 Steven Levithan <stevenlevithan.com> * MIT license * * Includes enhancements by Scott Trenda <scott.trenda.net> * and Kris Kowal <cixar.com/~kris.kowal/> * * Accepts a date, a mask, or a date and a mask. * Returns a formatted version of the given date. * The date defaults to the current date/time. * The mask defaults to dateFormat.masks.default. */ var dateFormat = function () { var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, timezoneClip = /[^-+\dA-Z]/g, pad = function (val, len) { val = String(val); len = len || 2; while (val.length < len) val = "0" + val; return val; }; // Regexes and supporting functions are cached through closure return function (date, mask, utc) { var dF = dateFormat; // You can't provide utc if you skip other args (use the "UTC:" mask prefix) if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { mask = date; date = undefined; } // Passing date through Date applies Date.parse, if necessary date = date ? new Date(date) : new Date; if (isNaN(date)) throw SyntaxError("invalid date"); mask = String(dF.masks[mask] || mask || dF.masks["default"]); // Allow setting the utc argument via the mask if (mask.slice(0, 4) == "UTC:") { mask = mask.slice(4); utc = true; } var _ = utc ? "getUTC" : "get", d = date[_ + "Date"](), D = date[_ + "Day"](), m = date[_ + "Month"](), y = date[_ + "FullYear"](), H = date[_ + "Hours"](), M = date[_ + "Minutes"](), s = date[_ + "Seconds"](), L = date[_ + "Milliseconds"](), o = utc ? 0 : date.getTimezoneOffset(), flags = { d: d, dd: pad(d), ddd: dF.i18n.dayNames[D], dddd: dF.i18n.dayNames[D + 7], m: m + 1, mm: pad(m + 1), mmm: dF.i18n.monthNames[m], mmmm: dF.i18n.monthNames[m + 12], yy: String(y).slice(2), yyyy: y, h: H % 12 || 12, hh: pad(H % 12 || 12), H: H, HH: pad(H), M: M, MM: pad(M), s: s, ss: pad(s), l: pad(L, 3), L: pad(L > 99 ? Math.round(L / 10) : L), t: H < 12 ? "a" : "p", tt: H < 12 ? "am" : "pm", T: H < 12 ? "A" : "P", TT: H < 12 ? "AM" : "PM", Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] }; return mask.replace(token, function ($0) { return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); }); }; }(); // Some common format strings dateFormat.masks = { "default": "ddd mmm dd yyyy HH:MM:ss", shortDate: "m/d/yy", mediumDate: "mmm d, yyyy", longDate: "mmmm d, yyyy", fullDate: "dddd, mmmm d, yyyy", shortTime: "h:MM TT", mediumTime: "h:MM:ss TT", longTime: "h:MM:ss TT Z", isoDate: "yyyy-mm-dd", isoTime: "HH:MM:ss", isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" }; // Internationalization strings dateFormat.i18n = { dayNames: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] }; // For convenience... Date.prototype.format = function (mask, utc) { return dateFormat(this, mask, utc); };
Note that the day and month names can be changed (for internationalization or other purposes) by updating the dateFormat.i18n object.
用法实例:
var now = new Date(); now.format("m/dd/yy"); // Returns, e.g., 6/09/07 // Can also be used as a standalone function dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT"); // Saturday, June 9th, 2007, 5:46:21 PM // You can use one of several named masks now.format("isoDateTime"); // 2007-06-09T17:46:21 // ...Or add your own dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"'; now.format("hammerTime"); // 17:46! Can't touch this! // When using the standalone dateFormat function, // you can also provide the date as a string dateFormat("Jun 9 2007", "fullDate"); // Saturday, June 9, 2007 // Note that if you don't include the mask argument, // dateFormat.masks.default is used now.format(); // Sat Jun 09 2007 17:46:21 // And if you don't include the date argument, // the current date and time is used dateFormat(); // Sat Jun 09 2007 17:46:22 // You can also skip the date argument (as long as your mask doesn't // contain any numbers), in which case the current date/time is used dateFormat("longTime"); // 5:46:22 PM EST // And finally, you can convert local time to UTC time. Either pass in // true as an additional argument (no argument skipping allowed in this case): dateFormat(now, "longTime", true); now.format("longTime", true); // Both lines return, e.g., 10:46:21 PM UTC // ...Or add the prefix "UTC:" to your mask. now.format("UTC:h:MM:ss TT Z"); // 10:46:21 PM UTC
Following are the special characters supported. Any differences in meaning from ColdFusion's dateFormat and timeFormat functions are noted.
说明文档:
d |
Day of the month as digits; no leading zero for single-digit days. |
dd |
Day of the month as digits; leading zero for single-digit days. |
ddd |
Day of the week as a three-letter abbreviation. |
dddd |
Day of the week as its full name. |
m |
Month as digits; no leading zero for single-digit months. |
mm |
Month as digits; leading zero for single-digit months. |
mmm |
Month as a three-letter abbreviation. |
mmmm |
Month as its full name. |
yy |
Year as last two digits; leading zero for years less than 10. |
yyyy |
Year represented by four digits. |
h |
Hours; no leading zero for single-digit hours (12-hour clock). |
hh |
Hours; leading zero for single-digit hours (12-hour clock). |
H |
Hours; no leading zero for single-digit hours (24-hour clock). |
HH |
Hours; leading zero for single-digit hours (24-hour clock). |
M |
Minutes; no leading zero for single-digit minutes. Uppercase M unlike CF timeFormat 's m to avoid conflict with months.
|
MM |
Minutes; leading zero for single-digit minutes. Uppercase MM unlike CF timeFormat 's mm to avoid conflict with months.
|
s |
Seconds; no leading zero for single-digit seconds. |
ss |
Seconds; leading zero for single-digit seconds. |
l or L
|
Milliseconds. l gives 3 digits. L gives 2 digits. |
t |
Lowercase, single-character time marker string: a or p. No equivalent in CF. |
tt |
Lowercase, two-character time marker string: am or pm. No equivalent in CF. |
T |
Uppercase, single-character time marker string: A or P. Uppercase T unlike CF's t to allow for user-specified casing. |
TT |
Uppercase, two-character time marker string: AM or PM. Uppercase TT unlike CF's tt to allow for user-specified casing. |
Z |
US timezone abbreviation, e.g. EST or MDT. With non-US timezones or in the Opera browser, the GMT/UTC offset is returned, e.g. GMT-0500 No equivalent in CF. |
o |
GMT/UTC timezone offset, e.g. -0500 or +0230. No equivalent in CF. |
S |
The date's ordinal suffix (st, nd, rd, or th). Works well with d .No equivalent in CF. |
'…' or "…"
|
Literal character sequence. Surrounding quotes are removed. No equivalent in CF. |
UTC: |
Must be the first four characters of the mask. Converts the date from local time to UTC/GMT/Zulu time before applying the mask. The "UTC:" prefix is removed. No equivalent in CF. |
And here are the named masks provided by default (you can easily change these or add your own):
default | ddd mmm dd yyyy HH:MM:ss | Sat Jun 09 2007 17:46:21 |
shortDate | m/d/yy | 6/9/07 |
mediumDate | mmm d, yyyy | Jun 9, 2007 |
longDate | mmmm d, yyyy | June 9, 2007 |
fullDate | dddd, mmmm d, yyyy | Saturday, June 9, 2007 |
shortTime | h:MM TT | 5:46 PM |
mediumTime | h:MM:ss TT | 5:46:21 PM |
longTime | h:MM:ss TT Z | 5:46:21 PM EST |
isoDate | yyyy-mm-dd | 2007-06-09 |
isoTime | HH:MM:ss | 17:46:21 |
isoDateTime | yyyy-mm-dd'T'HH:MM:ss | 2007-06-09T17:46:21 |
isoUtcDateTime | UTC:yyyy-mm-dd'T'HH:MM:ss'Z' | 2007-06-09T22:46:21Z |
A couple issues:
- In the unlikely event that there is ambiguity in the meaning of your mask (e.g.,
m
followed bymm
, with no separating characters), put a pair of empty quotes between your metasequences. The quotes will be removed automatically. - If you need to include literal quotes in your mask, the following rules apply:
- Unpaired quotes do not need special handling.
- To include literal quotes inside masks which contain any other quote marks of the same type, you need to enclose them with the alternative quote type (i.e., double quotes for single quotes, and vice versa). E.g.,
date.format('h "o\'clock, y\'all!"')
returns "6 o'clock, y'all". This can get a little hairy, perhaps, but I doubt people will really run into it that often. The previous example can also be written asdate.format("h") + "o'clock, y'all!"
.
来源:http://blog.stevenlevithan.com/archives/date-time-format
发表评论
-
使用jQuery和Pure.CSS创建一个可编辑的表格
2016-08-26 02:24 1236使用开源组件真的可以 ... -
2016十大优秀jQuery插件推荐
2016-08-26 02:24 2339当有限的开发知识限制了设计进展,你无法为自己插上创新的翅膀时 ... -
jQuery .tmpl() 用法
2016-08-26 02:22 1221参考效果: DEMO 下载: jquery-tmpl-ma ... -
jQuery:从零开始,DIY一个jQuery(2)
2016-08-19 03:06 1062在上篇文章我们简单实 ... -
jQuery:从零开始,DIY一个jQuery(1)
2016-08-19 03:00 994从本篇开始会陪大家一起从零开始走一遍 jQuery 的奇妙旅 ... -
Bootstrap 3: 菜单居中 Center content in responsive bootstrap navbar
2016-08-18 06:15 1596先看上面图片的效果,下面是代码: .navbar .nav ... -
jQuery: 操作select option方法集合
2016-08-18 06:06 3350每一次操作select的时候,总是要谷歌一下资料,真是太不爽 ... -
jQuery: 插件开发模式详解 $.extend(), $.fn, $.widget()
2016-08-16 05:31 1252原文:http://www.codeceo.com/arti ... -
jQuery: 选择器(DOM,name,属性,元素)
2016-08-11 01:17 4515出处:http://www.cnblogs.com/star ... -
jQuery: 合并表格中相同文本的相邻单元格
2016-08-01 08:02 1386一、效果 二、代码 <!DOCTYPE ... -
Bootstrap 3: 使用注意box-sizing细节及解决方法
2016-08-01 07:58 1603一、bootstrap样式 在Bootstrap v3.3 ... -
域名详解
2016-07-29 12:51 863域名 域名就是用来唯 ... -
Bootstrap 3: 图标转换事件 Change icons when toggle
2016-07-20 13:39 2321代码: <link href="http: ... -
Bootstrap 3: 图标转换事件 Change icons when toggle
2016-07-19 07:12 764代码: <link href=" ... -
jQuery:无限循环两个或者多个事件 click / toggle between two functions
2016-07-19 07:12 1646插件: (function($) { $.fn. ... -
javascript 中面向对象实现 如何继承
2016-07-14 01:01 548上一篇博客已经说了关于javascript中的封装, 其中也 ... -
javascript 中的面向对象实现 如何封装
2016-07-12 12:27 1229javascript 是一门很灵活的语言,也是一门有缺陷的语 ... -
AngularJS jQuery 共存法则
2016-06-14 05:26 3628寻找正确的方法,如何在AngularJS里使用jQuery ... -
七步从Angular.JS菜鸟到专家(3):数据绑定和AJAX
2016-06-04 05:28 1165AngularJS学习列表:七步 ... -
七步从Angular.JS菜鸟到专家(2):Scopes
2016-06-04 05:27 736AngularJS学习列表:七步走 Angular.js 从 ...
相关推荐
在日常的Web开发工作中,我们经常需要处理日期和时间相关的数据。JavaScript 的 `Date` 对象提供了多种方法来获取和设置日期时间,但原生 API 并没有直接提供日期格式化的功能。为了满足这一需求,开发者通常会通过...
在JavaScript中,日期格式化是将Date对象转换成特定字符串格式的过程。这通常涉及到自定义日期的显示方式,如年、月、日、小时、分钟、秒等。本篇文章将重点介绍两种常见的JavaScript日期格式化技巧。 方法一: 这...
总之,JavaScript DateFormat 是一个帮助开发者更方便地格式化日期和时间的工具,`DateUtil.js`可能就是这样一个实现,它扩展了原生`Date`对象的功能,提供了丰富的日期格式化选项,使得在JavaScript中处理日期变得...
在上篇文章给大家介绍了js对Date对象的操作的问题(生成一个倒数7天的数组),本篇介绍有关js日期格式化之javascript Date format,本文通过三种方法给大家讲解,具体内容请看下文。 方法一: // 对Date的扩展,将 ...
// 这部分将处理日期字符串,将其解析为JavaScript Date对象 // 可能涉及到异常处理,因为不是所有字符串都能成功解析为日期 }; ``` `SimpleDateFormat.js`这个文件很可能包含了上述`SimpleDateFormat`类的完整...
JavaScript是Web开发中不可或缺的一部分,尤其在处理日期和时间的操作上。日期格式化是一个常见的需求,无论是为了展示用户友好的日期格式,还是在处理服务器数据交换时。在JavaScript中,我们可以使用内置的`Date`...
描述中提到的"DATE_FORMAT时间Sql比较"和"for循环+hashmap"则暗示了这个资源可能涉及到SQL查询中处理日期的技巧,以及在编程(可能是Java)中使用for循环和HashMap的数据结构。 在SQL中,`DATE_FORMAT`函数是MySQL...
JavaScript原生提供了Date对象来处理日期,但其功能相对有限,因此开发者通常会利用各种库来增强其功能,以实现更精确的日期操作。在“JavaScript开发-日期处理库”的标签下,我们可以推断这是一个关于使用...
JavaScript 日期处理库是...了解并掌握这些库可以帮助你更高效地处理日期和时间相关的任务。例如,如果你需要处理复杂的时区问题,Luxon可能是最佳选择;如果你希望保持代码轻量化,Day.js和date-fns会是不错的选择。
"前端开源库-date_format" 提供了一个类似于PHP的JS日期格式化功能,使得JavaScript在处理日期时更加便捷。这个开源库可能是为了弥补JavaScript内置的Date对象在格式化方面的不足,提供了更丰富的选项和更易用的API...
内部实现可能会用到JavaScript的内置`Date`对象的方法,如`getFullYear`、`getMonth`和`getDate`等,以获取日期的各个部分,然后根据`format`参数拼接成最终的字符串。 接下来,`demo`文件夹可能包含了使用这个日期...
例如,`dateFormat(date, format)` 方法接收两个参数:需要处理的日期对象和期望的输出格式。 ```javascript var now = new Date(); console.log(dateFormat(now, 'yyyy-mm-dd HH:mm:ss')); ``` ### 3. 多语言支持...
在JavaScript中,字符串处理和日期操作是非常常见的需求,尤其是在数据清洗、格式转换等场景下。本文将详细介绍如何利用自定义方法实现字符串的Trim功能以及日期时间的格式化功能。 #### Trim函数 在JavaScript中...
现代JavaScript日期工具库如`date-fns`是开发者在处理日期和时间时的重要资源,尤其在复杂的前端项目中。它们提供了比JavaScript内置的`Date`对象更强大、更灵活的功能,以及更好的性能和模块化设计。`date-fns`是一...
这通常涉及到HTML5中的`<input type="date">`元素,以及JavaScript的DOM操作和事件处理来增强用户体验。本篇文章将深入探讨如何使用JavaScript进行表单日期选择,并提供相关实践示例。 1. HTML5日期输入类型: ...
在JavaScript中,Date对象是处理日期和时间的核心类。然而,JavaScript原生的Date对象并不提供格式化日期为特定字符串的内置方法,这通常需要开发者自己实现或引用第三方库。标题提到的"javascript-date-format"项目...
在JavaScript编程语言中,处理日期相关的操作非常常见。本文将基于提供的代码片段,详细介绍如何计算两个日期之间的差值,并在此基础上扩展更多与日期处理相关的知识。 ### 一、理解题目需求 根据给定的文件标题...
在JavaScript中,日期和时间处理是一项常见的任务,`Date`对象是JavaScript内置的处理日期和时间的类。当我们需要将日期格式化为"yyyy-MM-dd"这种格式时,JavaScript提供了多种方法来实现这一需求。这个格式通常用于...