时区时间戳前端转换
// 使用方法 $.formatDate("MM/dd/yyyy") 求当前时间an MM/dd/yyyy
// 举例
/**
* @date类型为 Date()
*
* @return <string>
*/
$.formatDate = function(pattern, date)
{
// 如果不设置,默认为当前时间
if (!date) date = new Date();
if (typeof (date) === "string")
{
if (date == "") date = new Date();
else
date = new Date(date.replace(/-/g, "/"));
}
/* 补00 */
var toFixedWidth = function(value)
{
var result = 100 + value;
return result.toString().substring(1);
};
/* 配置 */
var options =
{
regeExp : /(yyyy|M+|d+|h+|m+|s+|ee+|ws?|p)/g,
months : [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ],
// weeks : [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
// 'Friday', 'Saturday' ]
weeks : [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ]
};
/* 时间切换 */
var swithHours = function(hours)
{
return hours < 12 ? "AM" : "PM";
};
/* 配置值 */
var pattrnValue =
{
"yyyy" : date.getFullYear(), // 年份
"MM" : toFixedWidth(date.getMonth() + 1), // 月份
"dd" : toFixedWidth(date.getDate()), // 日期
"hh" : toFixedWidth(date.getHours()), // 小时
"mm" : toFixedWidth(date.getMinutes()), // 分钟
"ss" : toFixedWidth(date.getSeconds()), // 秒
"ee" : options.months[date.getMonth()], // 月份名称
"ws" : options.weeks[date.getDay()], // 星期名称
"M" : date.getMonth() + 1,
"d" : date.getDate(),
"h" : date.getHours(),
"m" : date.getMinutes(),
"s" : date.getSeconds(),
"p" : swithHours(date.getHours())
};
return pattern.replace(options.regeExp, function()
{
return pattrnValue[arguments[0]];
});
};
/**
* 时间转成时间戳
*
* @param <string>
* 2014-01-01 20:20:20 日期格式
* @return <int> 时间戳(秒) JS默认为毫秒,统一处理为秒
*/
$.dateToTimestamp = function(date)
{
date = $.formatDate('yyyy-MM-dd', date);
if (typeof (date) == 'number')
{
date = new String(date);
}
date = $.formatDate('yyyy-MM-dd', date);
var f = date.split(' ', 2);
var d = (f[0] ? f[0] : '').split('-', 3);
var t = (f[1] ? f[1] : '').split(':', 3);
var timestamp = (new Date(parseInt(d[0], 10) || null, (parseInt(d[1], 10) || 1) - 1, parseInt(d[2], 10) || null, parseInt(t[0], 10) || null, parseInt(t[1],
10)
|| null, parseInt(t[2], 10) || null)).getTime() / 1000;
if (timestamp < 0) timestamp = 0; // 配合MYSQL FROM_UNIXTIME函数, 当 timestamp<
// 0时,FROM_UNIXTIME返回NULL,实际时间应为
// 1970-1-1
return timestamp;
};
/**
* 时间戳转成时间
*
* @param <number>
* number类型
*
* @return <string>
*/
$.timestampToDate = function(timestampNumber)
{
if (typeof (timestampNumber) == 'string')
{
timestampNumber = parseInt(timestampNumber);
}
timestampNumber *= 1000;
var timestamp = new Date(timestampNumber);
// var commonTime = timestamp.toLocaleString();
// return commonTime.replace(/年|月/g, "-").replace(/日/g, " ");
var commonTime = timestamp.toString();
return commonTime;
};
/**
* 时间戳转成指定格式的时间
*
* @param <number>
* number类型
*
* @return <string>
*/
$.timestampToPatternDate = function(pattern, timestampNumber)
{
return $.formatDate(pattern, new Date($.timestampToDate(timestampNumber)));
};
/**
* 服务器时间戳 转成 指定格式的 本地时间
*
* @param <number>
* number类型
*
* @return <string>
*/
$.serverTimestampToPatternLocaleDate = function(pattern, timestampNumber)
{
// timestampNumber += new Date().getTimezoneOffset() * 60 + $.timeZone * 60
// * 60;
// timestampNumber += $.timeZone * 60 * 60 - (-1 * (new
// Date().getTimezoneOffset() * 60) );
var daylightOffset = 0 ;
//表示国外才操作,转换夏令时
if($.serverTimeZone == -7){
//表示这个时间为标记
var dateMark = $.dateToTimestamp("2015-3-8");
dateMark = $.changeTimestamp(dateMark, $.localTimeZone(), $.serverTimeZone);
if(timestampNumber < dateMark){
daylightOffset = -1;
}
}
//转换夏令时 end
timestampNumber = $.changeTimestamp(timestampNumber, $.serverTimeZone + daylightOffset, $.localTimeZone());
return $.timestampToPatternDate(pattern, timestampNumber);
};
/**
* 本地时间 转成 服务器时间戳
*
* @param <string>
* 2014-01-01 20:20:20 日期格式
* @return <int> 时间戳(秒) JS默认为毫秒,统一处理为秒
*/
$.localeDateToServerTimestamp = function(date)
{
var timestampNumber = $.dateToTimestamp(date);
//
// timestampNumber -= new Date().getTimezoneOffset() * 60 + $.timeZone * 60
// * 60;
// timestampNumber += (-1 * (new Date().getTimezoneOffset() * 60)) -
// $.timeZone * 60 * 60 ;
/**
*
* date < 2015-3-8 ,
*/
timestampNumber = $.changeTimestamp(timestampNumber, $.localTimeZone(), $.serverTimeZone);
//表示国外才操作,转换夏令时
if($.serverTimeZone == -7){
//表示这个时间为标记
var dateMark = $.dateToTimestamp("2015-3-9");
dateMark = $.changeTimestamp(dateMark, $.localTimeZone(), $.serverTimeZone);
if(timestampNumber < dateMark){
timestampNumber = $.changeTimestamp( $.dateToTimestamp(date), $.localTimeZone(), $.serverTimeZone - 1);//-8时区
}
}
//转换夏令时 end
return timestampNumber;
};
/**
* 服务器时间 转成 指定格式的 本地时间
*
* @param <date>
* date类型
*
* @return <date>
*/
$.serverDateToPatternLocaleDate = function(pattern, date)
{
var timestampNumber = date.getTime() / 1000;
//timestampNumber = $.changeTimestamp(timestampNumber, $.serverTimeZone, $.localTimeZone());
var daylightOffset = 0 ;
//表示国外才操作,转换夏令时
if($.serverTimeZone == -7){
//表示这个时间为标记
var dateMark = $.dateToTimestamp("2015-3-8");
dateMark = $.changeTimestamp(dateMark, $.localTimeZone(), $.serverTimeZone);
if(timestampNumber < dateMark){
daylightOffset = -1;
}
}
//转换夏令时 end
timestampNumber = $.changeTimestamp(timestampNumber, $.serverTimeZone + daylightOffset, $.localTimeZone());
return $.timestampToPatternDate(pattern, timestampNumber);
};
/***
* 时长转成 long data
*/
$.serverDateToPatternLocaleTimestamp = function(date)
{
var timestampNumber = date.getTime() / 1000;
//timestampNumber = $.changeTimestamp(timestampNumber, $.serverTimeZone, $.localTimeZone());
var daylightOffset = 0 ;
//表示国外才操作,转换夏令时
if($.serverTimeZone == -7){
//表示这个时间为标记
var dateMark = $.dateToTimestamp("2015-3-8");
dateMark = $.changeTimestamp(dateMark, $.localTimeZone(), $.serverTimeZone);
if(timestampNumber < dateMark){
daylightOffset = -1;
}
}
//转换夏令时 end
timestampNumber = $.changeTimestamp(timestampNumber, $.serverTimeZone + daylightOffset, $.localTimeZone());
return timestampNumber * 1000;
};
/**
* 指定时间 的 上一周
*
* @param <date>
* date类型
*
* @return <date>
*/
$.lastWeekDate = function(date)
{
var timestampNumber = date.getTime() - 7 * 24 * 60 * 60 * 1000;
return new Date(timestampNumber);
};
/**
* 指定时间 的 下一周
*
* @param <date>
* date类型
*
* @return <date>
*/
$.nextWeekDate = function(date)
{
var timestampNumber = date.getTime() + 7 * 24 * 60 * 60 * 1000;
return new Date(timestampNumber);
};
/**
* 指定时间 的 前一天
*
* @param <date>
* date类型
*
* @return <date>
*/
$.lastDate = function(date)
{
var timestampNumber = date.getTime() - 24 * 60 * 60 * 1000;
return new Date(timestampNumber);
};
$.finalTimestamp = function(timestampNumber)
{
return timestampNumber + 24 * 60 * 60 - 1;
};
/**
* 指定时间 的 后一天
*
* @param <date>
* date类型
*
* @return <date>
*/
$.nextDate = function(date)
{
var timestampNumber = date.getTime() + 24 * 60 * 60 * 1000;
return new Date(timestampNumber);
};
$.changeTimestamp = function(timestampNumber, sourceTimeZone, destTimeZone)
{
return timestampNumber + (sourceTimeZone - destTimeZone) * 60 * 60;
};
1万+

被折叠的 条评论
为什么被折叠?



