搜尋

首頁  >  問答  >  主體

javascript - JS中有类似PHP date()方法吗?

如题,想实现功能。
传入时间戳“1400000000”,返回格式:2015-01-01

PHP实现:date("Y-m-d H:i:s","1400000000");
javascript实现呢??

巴扎黑巴扎黑2815 天前1674

全部回覆(11)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-10 16:07:28

    随便实现了一下,写的比较糙,但是可以实现

    function getFormatDate(split,timeInMs){
      var curr=new Date();
      curr.setTime(timeInMs);
      var year=curr.getFullYear();
      var month=curr.getMonth()+1;
      var date=curr.getDate();
      
      var hours=curr.getHours();
      var minutes=curr.getMinutes();
      var seconds=curr.getSeconds();
      
      var formatDateStr=year+split[0]+month+split[0]+date+" "+hours+split[1]+minutes+split[1]+seconds;
      return formatDateStr;
    }
    
    var res=getFormatDate(["-",":"],1433456000345); //这里要输入13位数
    console.log(res); // 2015-6-5 6:13:20

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-10 16:07:28

    https://github.com/jacwright/date.format

    回覆
    0
  • 迷茫

    迷茫2017-04-10 16:07:28

    自己实现的话可以看以上几位的,俺贴个插件。

    http://momentjs.cn/

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-10 16:07:28

    兼容大部分PHP里面date函数的实现:

    function date () {
        if (arguments.length == 0) {
            throw "date() expects at least 1 parameter, 0 given";
        }
    
        var format = arguments[0];
        var time = arguments.length > 1 ? new Date(arguments[1] * 1000) : new Date();
    
        var padding = function (str, length) {
            return "0000".substr(0, length - str.toString().length) + str;
        }
    
        return format.replace(/[a-z]/ig, function (c){
            var dayOfYear = function (time) {
                return (time.getTime() - (new Date(time.getFullYear(), 0, 1)).getTime()) / 86400000 >> 0;
            }
    
            var daysOfMonth = function (time) {
                var year = time.getFullYear();
                var month = time.getMonth();
                return ((new Date(year, month + 1, 1)).getTime() - (new Date(year, month, 1)).getTime()) / 86400000 >> 0;
            }
    
            var sign = function (num) {
                return num >= 0 ? "+" : "-";
            }
    
            switch (c) {
                case "d":
                    return padding(time.getDate());
                case "D":
                    return ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][time.getDay()];
                case "j":
                    return time.getDate();
                case "l":
                    return ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][time.getDay()];
                case "N":
                    return [7, 1, 2, 3, 4, 5, 6][time.getDay()];
                case "S":
                    switch(time.getDate()) {
                        case 1:
                            return "st";
                        case 2:
                        case 22:
                            return "nd";
                        case 3:
                        case 23:
                            return "rd";
                    }
                    return "th";
                case "w":
                    return time.getDay();
                case "z":
                    return dayOfYear(time);
                case "W":
                    return dayOfYear(time) / 7 >> 0;
                case "F":
                    return ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][time.getMonth()];
                case "m":
                    return padding(time.getMonth() + 1, 2);
                case "M":
                    return ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][time.getMonth()];
                case "n":
                    return time.getMonth() + 1;
                case "t":
                    return daysOfMonth(time);
                case "L":
                    return dayOfyear(new Date(time.getFullYear() + 1, 0, 1)) == 365;
                case "Y":
                    return time.getFullYear();
                case "y":
                    return padding(time.getFullYear() % 100, 2);
                case "a":
                    return time.getHours() >= 12 ? "am" : "pm";
                case "A":
                    return time.getHours() >= 12 ? "AM" : "PM";
                case "g":
                    return time.getHours() % 12;
                case "G":
                    return time.getHours();
                case "h":
                    return padding(time.getHours() % 12, 2);
                case "H":
                    return padding(time.getHours(), 2);
                case "i":
                    return padding(time.getMinutes(), 2);
                case "s":
                    return padding(time.getSeconds(), 2);
                case "u":
                    return time.getTime() % 1000 + "000";
                case "O":
                    return sign(-time.getTimezoneOffset()) + padding(Math.abs(time.getTimezoneOffset()) / 60, 2) + "00";
                case "P":
                    return sign(-time.getTimezoneOffset()) + padding(Math.abs(time.getTimezoneOffset()) / 60 >> 0, 2) + ":" + Math.abs(time.getTimezoneOffset()) % 60;
                case "Z":
                    return -time.getTimezoneOffset();
                case "U":
                    return time.getTime() / 1000 >> 0;
                case "o":
                case "B":
                case "e":
                case "I":
                case "T":
                case "c":
                case "r":
                    throw c + " is not yet implemented.";
                default:
                    return c;
             }
        })
    }

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-10 16:07:28

    // 对Date的扩展,将 Date 转化为指定格式的String
    // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
    // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
    function formatDate(date, fmt){ //author: meizz
        fmt = fmt || 'yyyy-MM-dd hh:mm:ss';
        var o = {
            "M+" : date.getMonth()+1,                 //月份
            "d+" : date.getDate(),                    //日
            "h+" : date.getHours(),                   //小时
            "m+" : date.getMinutes(),                 //分
            "s+" : date.getSeconds(),                 //秒
            "q+" : Math.floor((date.getMonth()+3)/3), //季度
            "S"  : date.getMilliseconds()             //毫秒
        };
        if(/(y+)/.test(fmt))
            fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));
        for(var k in o)
            if(new RegExp("("+ k +")").test(fmt))
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
        return fmt;
    }

    不用谢我,我也是从其他地方抄的

    回覆
    0
  • 高洛峰

    高洛峰2017-04-10 16:07:28

    var unixTimestamp = new Date(1446027232 * 1000);
    commonTime = unixTimestamp.toLocaleString();
    

    希望这个也能帮到你一点。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-10 16:07:28

    有,不过不太好用。
    另附其他语言版本

    Java    time
    JavaScript    Math.round(new Date().getTime()/1000)
    getTime()返回数值的单位是毫秒
    Microsoft .NET / C#    epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000
    MySQL    SELECT unix_timestamp(now())
    Perl    time
    PHP    time()
    PostgreSQL    SELECT extract(epoch FROM now())
    Python    先 import time 然后 time.time()
    Ruby    获取Unix时间戳:Time.now 或 Time.new
    显示Unix时间戳:Time.now.to_i
    SQL Server    SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())
    Unix / Linux    date +%s
    VBScript / ASP    DateDiff("s", "01/01/1970 00:00:00", Now())
    其他操作系统
    (如果Perl被安装在系统中)    命令行状态:perl -e "print time"

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-10 16:07:28

    建议使用momentjs,出bug的机会小;不过有时间可以研究楼上自己写的扩展。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-10 16:07:28

    https://segmentfault.com/q/1010000000701472/a-1020000005044252?utm_source=Weibo
    楼上代码都不错,这里也有一个,大同小异.

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 16:07:28

    function formatDate(now)   {     
                  var   year=now.getYear();     
                  var   month=now.getMonth()+1;     
                  var   date=now.getDate();     
                  var   hour=now.getHours();     
                  var   minute=now.getMinutes();     
                  var   second=now.getSeconds();     
                  return   year+"-"+month+"-"+date+"   "+hour+":"+minute+":"+second;    
      } 

    可以试试这个函数。
    改下这个就行。
    return year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second;

    回覆
    0
  • 取消回覆