⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simpledateformat.js

📁 Browser independent JavaScript SDK. ClassLoader to lazy load JavaScript classes, extensions to core
💻 JS
字号:
	/**	* @fileOverview	* @example	*/	/**	* @class SimpleDateFormat	* @constructor	* @param {String} _formatString	*/	jsx.lang.util.SimpleDateFormat = function(){this.initialize.apply(this, arguments);}	/** @ignore */	jsx.lang.util.SimpleDateFormat.prototype.initialize = function(_formatString)	{		this.formatString = _formatString;		this.minimalDaysInFirstWeek = Date.DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK	}	jsx.lang.util.SimpleDateFormat.__PATTERN_REG_EXP__ = "('[^']*')|(G+|y+|M+|w+|W+|D+|d+|F+|E+|a+|H+|k+|K+|h+|m+|s+|S+|z+|Z+)|([a-zA-Z]+)|([^a-zA-Z']+)";	jsx.lang.util.SimpleDateFormat.TEXT2			= 0;	jsx.lang.util.SimpleDateFormat.TEXT3			= 1;	jsx.lang.util.SimpleDateFormat.NUMBER			= 2;	jsx.lang.util.SimpleDateFormat.YEAR			= 3;	jsx.lang.util.SimpleDateFormat.MONTH			= 4;	jsx.lang.util.SimpleDateFormat.TIMEZONE_TEXT	= 5;	jsx.lang.util.SimpleDateFormat.TIMEZONE		= 6;	jsx.lang.util.SimpleDateFormat.TYPES = {			G : jsx.lang.util.SimpleDateFormat.TEXT2,			y : jsx.lang.util.SimpleDateFormat.YEAR,			M : jsx.lang.util.SimpleDateFormat.MONTH,			w : jsx.lang.util.SimpleDateFormat.NUMBER,			W : jsx.lang.util.SimpleDateFormat.NUMBER,			D : jsx.lang.util.SimpleDateFormat.NUMBER,			d : jsx.lang.util.SimpleDateFormat.NUMBER,			F : jsx.lang.util.SimpleDateFormat.NUMBER,			E : jsx.lang.util.SimpleDateFormat.TEXT3,			a : jsx.lang.util.SimpleDateFormat.TEXT2,			H : jsx.lang.util.SimpleDateFormat.NUMBER,			k : jsx.lang.util.SimpleDateFormat.NUMBER,			K : jsx.lang.util.SimpleDateFormat.NUMBER,			h : jsx.lang.util.SimpleDateFormat.NUMBER,			m : jsx.lang.util.SimpleDateFormat.NUMBER,			s : jsx.lang.util.SimpleDateFormat.NUMBER,			S : jsx.lang.util.SimpleDateFormat.NUMBER,			z : jsx.lang.util.SimpleDateFormat.TIMEZONE_TEXT,			Z : jsx.lang.util.SimpleDateFormat.TIMEZONE	};	/**	*	*/	jsx.lang.util.SimpleDateFormat.prototype.setMinimalDaysInFirstWeek = function(_minimalDaysInFirstWeek)	{		this.minimalDaysInFirstWeek = _minimalDaysInFirstWeek;	}	/**	*	*/	jsx.lang.util.SimpleDateFormat.prototype.getMinimalDaysInFirstWeek = function()	{		return this.minimalDaysInFirstWeek;	}	/**	*	* @param {Date}	*/	jsx.lang.util.SimpleDateFormat.prototype.format = function(_date)	{		var padWithZeroes = function(_string, _length)		{			while(_string.length < _length)			{				_string = "0" + _string;			}			return _string;		}		var formatText = function(_data, _numberOfLetters, minLength)		{			return (_numberOfLetters >= 4) ? _data : _data.substr(0, Math.max(minLength, _numberOfLetters));		}		var formatNumber = function(_data, _numberOfLetters)		{			return padWithZeroes("" + _data, _numberOfLetters);		}		var _formattedString = new jsx.lang.StringBuffer();		var _regexp = new RegExp(jsx.lang.util.SimpleDateFormat.__PATTERN_REG_EXP__, "g");		var _result;		while((_result = _regexp.exec(this.formatString)) != null)		{			var _matchedString = _result[0];			var _quotedString = _result[1];			var _patternLetters = _result[2];			var _otherLetters = _result[3];			var _otherCharacters = _result[4];			if(_quotedString)			{				if("''".equals(_quotedString))				{					_formattedString.append("'");				}				else				{					_formattedString.append(_quotedString.substring(1, _quotedString.length - 1));				}			}			else if(_otherLetters)			{				// ignore			}			else if(_otherCharacters)			{				_formattedString.append(_otherCharacters);			}			else if(_patternLetters)			{				var _patternLetter = _patternLetters.charAt(0);				var _numberOfLetters = _patternLetters.length;				var _rawData = "";				switch(_patternLetter)				{					case "G":						_rawData = "AD";						break;					case "y":						_rawData = _date.getFullYear();						break;					case "M":						_rawData = _date.getMonth();						break;					case "w":						_rawData = _date.getWeekInYear(this.getMinimalDaysInFirstWeek());						break;					case "W":						_rawData = _date.getWeekInMonth(this.getMinimalDaysInFirstWeek());						break;					case "D":						_rawData = _date.getDayInYear();						break;					case "d":						_rawData = _date.getDate();						break;					case "F":						_rawData = 1 + Math.floor((_date.getDate() - 1) / 7);						break;					case "E":						_rawData = Date.DAY_NAMES[_date.getDay()];						break;					case "a":						_rawData = (_date.getHours() >= 12) ? "PM" : "AM";						break;					case "H":	// Hour in day (0-23)						_rawData = _date.getHours();						break;					case "k":	// Hour in day (1-24)						_rawData = _date.getHours() + 1;						break;					case "K":	// Hour in am/pm (0-11)						_rawData = _date.getHours() % 12;						break;					case "h":	// Hour in am/pm (1-12)						_rawData = (_date.getHours() <= 12) ? _date.getHours() : _date.getHours() - 12;						break;					case "m":						_rawData = _date.getMinutes();						break;					case "s":						_rawData = _date.getSeconds();						break;					case "S":						_rawData = _date.getMilliseconds();						break;					case "z":						_rawData = _date.getTimeZone();						break;					case "Z":						_rawData = _date.getTimezoneOffset();						break;				}				// Format the raw data depending on the type				switch(jsx.lang.util.SimpleDateFormat.TYPES[_patternLetter])				{					case jsx.lang.util.SimpleDateFormat.TEXT2:						_formattedString.append(formatText(_rawData, _numberOfLetters, 2));						break;					case jsx.lang.util.SimpleDateFormat.TEXT3:						_formattedString.append(formatText(_rawData, _numberOfLetters, 3));						break;					case jsx.lang.util.SimpleDateFormat.NUMBER:						_formattedString.append(formatNumber(_rawData, _numberOfLetters));						break;					case jsx.lang.util.SimpleDateFormat.YEAR:						if(_numberOfLetters <= 2)						{							// Output a 2-digit year							_formattedString.append((""+_rawData).substr(2, 2));						}						else						{							_formattedString.append(formatNumber(_rawData, _numberOfLetters));						}						break;					case jsx.lang.util.SimpleDateFormat.MONTH:						if(_numberOfLetters >= 3)						{							_formattedString.append(formatText(Date.MONTH_NAMES[_rawData], _numberOfLetters, _numberOfLetters));						}						else						{							_formattedString.append(formatNumber(_rawData + 1, _numberOfLetters));						}						break;					case jsx.lang.util.SimpleDateFormat.TIMEZONE_TEXT:						if(_numberOfLetters <= 3)						{							var _timezone = "";							(""+_rawData).each(" ", function(_value)							{								_timezone += _value.charAt(0);							});							_formattedString.append(_timezone);						}						else						{							_formattedString.append(_rawData);						}						break;					case jsx.lang.util.SimpleDateFormat.TIMEZONE:						var isPositive = (_rawData > 0);						// The following line looks like a mistake but isn't because of the way getTimezoneOffset measures.						var prefix = isPositive ? "-" : "+";						var absData = Math.abs(_rawData);						// Hours						var hours = "" + Math.floor(absData / 60);						hours = padWithZeroes(hours, 2);						// Minutes						var minutes = "" +(absData % 60);						minutes = padWithZeroes(minutes, 2);						_formattedString.append(prefix + hours + minutes);						break;				}			}		}		return _formattedString.toString();	}jsx.lang.util.SimpleDateFormat.PACKAGE = "jsx.lang.util";jsx.lang.util.SimpleDateFormat.CLASS = "jsx.lang.util.SimpleDateFormat";jsx.lang.util.SimpleDateFormat.SUPER_CLASS = "";jsx.lang.util.SimpleDateFormat.IMPORTS = ["jsx.lang.StringBuffer"];jsx.lang.util.SimpleDateFormat.INTERFACES = [];jsx.lang.util.SimpleDateFormat.MIXINS = [];jsx.lang.util.SimpleDateFormat.getName = function(){return jsx.lang.util.SimpleDateFormat.CLASS;}jsx.lang.util.SimpleDateFormat.klass = new jsx.lang.Class(jsx.lang.util.SimpleDateFormat.getName());jsx.lang.util.SimpleDateFormat.prototype.getClass = function(){return jsx.lang.util.SimpleDateFormat.klass;}jsx.lang.util.SimpleDateFormat.WARNINGS = [];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -