`

时区时间戳前端转换

 
阅读更多

 

 

时区时间戳前端转换

 

// 使用方法 $.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;
};

 

分享到:
评论

相关推荐

    JavaScript日期时间与时间戳的转换函数分享

    JavaScript中的Date对象和时间戳默认是基于UTC时区的,但很多时候我们需要将时间转换为本地时区的时间。这时可以使用Date对象的toLocaleString或toLocaleDateString等方法,根据浏览器所在的具体时区来进行转换。 ...

    时间戳转化

    在计算机科学和编程领域,时间戳是一个非常重要的概念,它...无论是前端开发、后端服务,还是数据分析,都离不开对时间戳的处理。通过学习和实践,我们可以有效地处理和利用时间戳来满足各种时间相关的计算和展示需求。

    JS自定义函数实现时间戳转换成date的方法示例

    这是通过将时区偏移量(分钟)转换为毫秒(乘以60再乘以1000),然后加到原始时间戳上实现的。使用Date对象获取日期和时间后,还需要对月份进行加一处理,因为在JavaScript中月份是从0开始计数的。 5. 时间格式化:...

    LocalDateTime在项目中的使用(LocalDateTime对接前端通过时间戳互转、LocalDateTime对接数据库)

    例如,使用`PreparedStatement`设置`LocalDateTime`参数时,需要将其转换为带时区的`ZonedDateTime`,然后调用`toInstant()`得到UTC时间戳。 ### 总结 在项目中使用`LocalDateTime`,需注意前后端时间戳的互转以及...

    jquery中实现时间戳与日期相互转换

    - **从时间戳转换回日期**:`UnixToDate`函数接收一个秒级时间戳,可以指定是否返回完整日期格式(包括小时、分钟和秒)以及时区偏移。它首先可能根据时区参数调整时间戳,然后利用`getUTC*`系列方法获取UTC日期和...

    Timestampy用于处理UNIX时间戳一堆实用工具类

    8. **时间戳与本地时间的转换**:考虑到时区差异,Timestampy可能还提供将时间戳转换为用户的本地时间的功能。 9. **时间间隔计算**:可以计算两个时间戳之间的精确时间间隔,包括毫秒、秒、分钟、小时、天、周、月...

    layui前端时间戳转化实例

    layui前端时间戳转化实例主要涉及了在Web前端开发中如何使用layui框架将后端传递的时间戳转换为可读性更强的日期格式,并在表格中展示。layui是一个轻量级的前端UI框架,提供了丰富的组件和模块,如表格、分页、层...

    jQuery时间戳和日期相互转换操作示例

    这些基本的转换函数在处理日期和时间戳之间的转换时非常有用,特别是在需要进行日期运算或比较,或者在前端展示时间时。了解如何在jQuery中进行这些转换,能够帮助开发者更高效地处理时间相关的逻辑。

    JS的时间格式化和时间戳转换函数示例详解

    在JavaScript(JS)中,处理时间和日期是常见的需求,包括时间格式化和时间戳转换。以下是对这些概念的深入解析: 1. **时间格式化**: 在JS中,我们通常使用`Date`对象来处理日期和时间。`dateFormat`函数就是一...

    把时间戳转换为日期格式的js代码

    ### 把时间戳转换为日期格式的JS代码详解 在前端开发中,经常需要处理时间相关的数据展示。本文将详细介绍如何使用JavaScript将时间戳转换成更友好的日期格式,并通过几种不同的方法来实现这一功能。 #### 一、...

    Spring项目前端显示的时间差8小时分析

    - 在前端,使用对应的时区转换函数将UTC时间转换为用户本地时间。 - 如果问题出在数据库,确保存储时间戳而不是带有时区信息的日期时间,因为时间戳总是基于UTC。 6. **工具使用**: - 可以使用`joda-time`或`...

    JavaScript时间戳与时间日期间相互转换

    在进行前端开发时,通常需要对时间戳进行转换和格式化,以便在用户界面上友好地显示日期和时间信息。而在进行后端开发,尤其是涉及到跨时区数据处理时,正确地理解和处理时间戳显得尤为关键。 总的来说,JavaScript...

    Vue.js 时间转换代码及时间戳转时间字符串

    最后,文件中的内容虽然介绍了时间转换的一些基本方法,但在实际开发中还需要注意时区问题,尤其是在前后端交互时,时间的处理要保证时区一致性,以免出现时间误差。此外,还应当注意性能问题,对于需要频繁进行时间...

    一个long型与Date型时间转换工具

    例如,可能存在`TimeUtil.longToDate(long timestamp)`和`TimeUtil.dateToLong(Date date)`这样的方法,分别用于将long类型的时间戳转换为Date对象,以及将Date对象转换回long类型的时间戳。 在测试环境中,这个...

    Springboot DTO字符字段与日期字段的转换问题.docx

    当前端提交包含日期字符串的JSON时,如`"birthday":"1983-03-18"`,Spring Boot默认会将这个字符串解析为时间戳,而不是转换为Date对象。因此,在响应到前端时,`birthday`字段显示为时间戳,而不是日期字符串。 ...

    前端项目-moment-timezone.zip

    例如,你可以通过以下代码将一个时间戳转换为特定时区的格式: ```javascript var moment = require('moment-timezone'); var timestamp = Date.now(); var timezone = 'Asia/Shanghai'; var formattedTime = ...

    js 计算时间(几分钟前、几小时前、几天前、几周前、几月前)

    以上代码提供了一个基本的时间差转换函数`timeAgo`,可以根据实际情况进行扩展和优化,比如添加对“年前”的处理,或者考虑时区差异等。在实际项目中,你可能会发现类似`timeago_New.js`这样的文件,它可能已经封装...

    JS多个国家时区时间代码.zip

    JavaScript(简称JS)是一种广泛用于前端开发的编程语言,它在网页中处理时间与日期时非常有用,尤其是在处理不同国家的时区问题时。这个压缩包"JS多个国家时区时间代码.zip"很可能包含了一些示例代码,帮助开发者...

    JS将时间秒转换成天小时分钟秒的字符串

    在JavaScript中,处理时间戳和时间格式化是常见的任务,特别是在前端开发中,为了提供用户友好的界面,需要将原始数据转换成易于理解的形式。本文将深入探讨如何将时间秒转换成天、小时、分钟、秒的字符串,以及...

    电商项目中用到的限时抢购使用到的倒计时,API提供一个时间戳,可以显示天、时、分、秒-countDownDemo.zip

    在实际项目中,你可能还需要考虑时区问题、前端与后端时间同步误差以及在倒计时结束时执行的回调函数等问题。在`countDownDemo-master`这个压缩包中,应该包含了完整的示例代码和相关资源,你可以通过阅读和学习这个...

Global site tag (gtag.js) - Google Analytics