将字符串转换为格式化的日期 [英] Converting a string into a formatted date

查看:173
本文介绍了将字符串转换为格式化的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编写了JavaScript代码,它读取名为 leave_start leave_end 的文本字段,并确定它们之间的日期。目前,我创建的日期如下所示:

  Mon Apr 6 2015 00:00:00 GMT-0400 

但是,我希望每个日期看起来像这样:

  Mon Apr 6 2015 

正如你所看到的,我只是想剥离时间组件。任何人都可以帮忙?






框架: rails on rails 4.1.8



这是我的 app.js ,查看我的两个 datepicker 文本字段( leave_start leave_end )。

  $(document).ready(function(){

$('。customSub')。click(function(){

var start = $('#leave_start' ).datepicker(getDate),
end = $('#leave_end')。datepicker(getDate),
currentDate = new Date(start),
between = [] ;

while(currentDate< = end){
between.push(new Date(currentDate));
currentDate.setDate(currentDate.getDate()+ 1);
}

var formated_dates = between.reduce(function(dates,date){
dates.push(date.toString());
return dates;
},[]);
$('#gdates')。val(form ated_dates.join(\\\
));

});
});

根据@Nikos M.的答案,这将是正确的做法吗? / p>

  $(document).ready(function(){

$(',customSub')。点击(function(){

var start = $('#leave_start')。datepicker(getDate),
end = $('#leave_end')。datepicker(getDate ),
currentDate = new Date(start),
between = []
;

while(currentDate< = end){
between .push(new Date(currentDate));
currentDate.setDate(currentDate.getDate()+ 1);
}
var date_start = new Date();
控制台。 log(date('Ym-d',date_start));

var formated_dates = between.reduce(function(dates,date){
dates.push(date.toString() ;
返回日期;
},[]);
$('#gdates')。val(formated_dates.join(\\\
));

});
});






其他信息 / p>

这是我的索引视图,我想要 full_range 看起来像 Mon Apr 6 2015 而不是 Mon Apr 6 2015 00:00:00 GMT-0400 。我试过在 full_range 上使用 .strftime('%m /%d /%y')工作。 full_range 在我的JavaScript中 #gdates

 %table.table.table-bordered.trace-table 
%tr
-@entry.each do | e |
%tr
%td.trace-table.bordered.trace-table {:style => 'width:8%;'} = e.leave_start.strftime('%m /%d /%y')
%td.trace-table.bordered.trace-table {:style => 'width:8%;'} = e.leave_end.strftime('%m /%d /%y')
%td.trace-table.bordered.trace-table {:style => 'width:8%;'} = e.full_range

最后,这是我的入门表: / p>

  create_tableentries
t.datetimecreated_at
t。 datetimeupdated_at
t.datetimeleave_start
t.datetimeleave_end
t.stringfull_range


解决方案

有各种格式的操作日期的varioius库,如moment.js等



这里需要的是将日期转换成给定格式的函数。使用 date.toString date.toDate



PHP具有格式化日期的功能已被移植到php.js项目(在github上)的javascript ,您可以在项目中使用该功能(只需将其独立地复制粘贴)



PHP日期格式



您可以按需要格式化日期,包括时间,年份等(不限于js本地日期方法)



在此重现代码(取自php.js):

 函数日期(格式,时间戳){
//讨论于:http ://phpjs.org/functions/date/
//原作者:Carlos RL Rodrigues(http://www.jsfromhell.com)
//原作者:gettimeofday
//部分由:Peter-Paul Koch(http:/ /www.quirksmode.org/js/beat.html)
//改进者:Kevin van Zonneveld(http://kevin.vanzonneveld.net)
//改进者:MeEtc(http:/ /yass.meetcweb.com)
//改进者:Brad Touesnard
//改进:Tim Wiel
//改进者:Bryan Elliott
//改进者:David Randall
//改进:Theriault
//改进:Theriault
//改进:Brett Zamir(http://brett-zamir.me)
//改进由:Theriault
//改进:Thomas Beaucourt(http://www.webapp.fr)
//改进:JT
//改进:Theriault
/ /改进:RafałKukawski(http://blog.kukawski.pl)
//改进:Theriault
//输入:Brett Zamir(http://brett-zamir.me)
//输入:majak
//输入:Alex
//输入:Martin
//输入:Alex Wilson
//输入:Haravikk
// bugfixed:Kevin van Zonneveld(http://kevin.vanzonneveld.net)
// bugfixed由:ma jak
// bugfixed由:Kevin van Zonneveld(http://kevin.vanzonneveld.net)
// bugfixed由:Brett Zamir(http://brett-zamir.me)
// bugfixed by:omid(http://phpjs.org/functions/380:380#comment_137122)
// bugfixed:Chris(http://www.devotis.nl/)
/ / note:使用全局:php_js存储默认时区
//注意:虽然该函数可能允许时区信息(见注释),但它目前没有设置
// note:根据每个时区指定date_default_timezone_set()。实现者可能使用
//注意:this.php_js.currentTimezoneOffset和this.php_js.currentTimezoneDST由该函数设置
//注意:为了调整此函数中的日期(或我们的其他日期函数! )相应地
//示例1:date('H:m:s \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\h',1062402400);
//返回1:'09:09:40 m是月'
//示例2:date('F j,Y,g​​:i a',1062462400);
//返回2:'2003年9月2日,上午2:26'
//示例3:date('Y W o',1062462400);
//返回3:'2003 36 2003'
//示例4:x = date('Y m d',(new Date())。getTime()/ 1000);
//示例4:(x +'')。length == 10 // 2009 01 09
//返回4:true
//示例5:date('W',1104534000 );
//返回5:'53'
//示例6:date('B t',1104534000);
//返回6:'999 31'
//示例7:date('W U',1293750000.82); // 2010-12-31
//返回7:'52 1293750000'
//示例8:date('W',1293836400); // 2011-01-01
//返回8:'52'
//示例9:date('W Y-m-d',1293974054); // 2011-01-02
//返回9:'52 2011-01-02'

var that = this;
var jsdate,f;
//保持这里(工作,但为下面的代码注释文件大小的原因)
// var tal = [];
var txt_words = [
'太阳','星期一','星期二','星期三','星期四','星期五','星期',
' ''''''''''''''''''''''$'$''''''''''''' ;
//尾随反斜杠 - > (drop)
//反斜杠后跟任何字符(包括反斜杠) - >字符
//空字符串 - >空字符串
var formatChr = /\\?(.?)/gi;
var formatChrCb = function(t,s){
return f [t]? f [t]():s;
};
var _pad = function(n,c){
n = String(n);
while(n.length n ='0'+ n;
}
返回n;
};
f = {
// Day
d:function(){
//月的日子w /前导0; 01..31
return _pad(f.j(),2);
},
D:function(){
// Shorthand day name; Mon ... Sun
return f.l()
.slice(0,3);
},
j:function(){
//月日; 1..31
return jsdate.getDate();
},
l:function(){
//全天名称;星期一...星期日
返回txt_words [f.w()] +'day';
},
N:function(){
// ISO-8601星期几; 1 [Mon] .. 7 [Sun]
return f.w()|| 7;
},
S:function(){
//月的日期后缀; st,nd,rd,th
var j = f.j();
var i = j%10;
if(i< = 3&&&&&&&& parseInt((j%100)/ 10,10)== 1){
i =
}
return ['st','nd','rd'] [i - 1] || 'th'
},
w:function(){
//星期几; 0 [Sun] .. 6 [Sat]
return jsdate.getDay();
},
z:function(){
//年份; 0..365
var a = new Date(f.Y(),f.n() - 1,f.j());
var b = new Date(f.Y(),0,1);
return Math.round((a - b)/ 864e5);
},

//周
W:function(){
// ISO-8601周号
var a = new Date(fY ),fn() - 1,fj() - fN()+ 3);
var b = new Date(a.getFullYear(),0,4);
return _pad(1 + Math.round((a - b)/ 864e5 / 7),2);
},

//月
F:function(){
//全月份名称; 1月... 12月
返回txt_words [6 + f.n()];
},
m:function(){
//月w / leading 0; 01 ... 12
return _pad(f.n(),2);
},
M:function(){
//快速月份名称; Jan ... Dec
return f.F()
.slice(0,3);
},
n:function(){
// Month; 1 ... 12
return jsdate.getMonth()+ 1;
},
t:function(){
//月日数; 28 ... 31
return(new Date(f.Y(),f.n(),0))
.getDate();
},

//年
L:function(){
//闰年? 0或1
var j = f.Y();
return j%4 === 0& j%100!== 0 | j%400 === 0;
},
o:function(){
// ISO-8601 year
var n = f.n();
var W = f.W();
var Y = f.Y();
return Y +(n === 12&& W< 9?1:n === 1&&&&> 9> -1:0);
},
Y:function(){
//全年;例如1980 ... 2010
return jsdate.getFullYear();
},
y:function(){
//年份的最后两位数字; 00 ... 99
return f.Y()
.toString()
.slice(-2);
},

//时间
a:function(){
// am或pm
return jsdate.getHours()> 11? 'pm':'am';
},
A:function(){
// AM或PM
return f.a()
.toUpperCase();
},
B:function(){
// Swatch Internet time; 000..999
var H = jsdate.getUTCHours()* 36e2;
// Hours
var i = jsdate.getUTCMinutes()* 60;
//分钟
// Seconds
var s = jsdate.getUTCSeconds();
return _pad(Math.floor((H + i + s + 36e2)/ 86.4)%1e3,3);
},
g:function(){
// 12小时; 1..12
return f.G()%12 || 12;
},
G:function(){
// 24小时; 0..23
return jsdate.getHours();
},
h:function(){
// 12-hours w / leading 0; 01..12
return _pad(f.g(),2);
},
H:function(){
// 24小时w /前导0; 00..23
return _pad(f.G(),2);
},
i:function(){
//分钟前导0; 00..59
return _pad(jsdate.getMinutes(),2);
},
s:function(){
// Seconds w / leading 0; 00..59
return _pad(jsdate.getSeconds(),2);
},
u:function(){
//微秒; 000000-999000
return _pad(jsdate.getMilliseconds()* 1000,6);
},

//时区
e:function(){
//时区标识符;例如大西洋/亚速尔群岛...
//以下工作,但需要包含非常大的
// timezone_abbreviations_list()函数。
/ * return that.date_default_timezone_get();
* /
throw'不支持(请参阅有关如何添加支持的时区的date()的源代码)';
},
I:function(){
// DST观察? 0或1
//比较1月1日减1月1日UTC到7月1日减去1月1日UTC。
//如果它们不相等,则观察到DST。
var a = new Date(f.Y(),0);
// Jan 1
var c = Date.UTC(f.Y(),0);
// Jan 1 UTC
var b = new Date(f.Y(),6);
// Jul 1
// Jul 1 UTC
var d = Date.UTC(f.Y(),6);
return((a - c)!==(b - d))? 1:0;
},
O:function(){
//与小时格式的GMT格式不同;例如+0200
var tzo = jsdate.getTimezoneOffset();
var a = Math.abs(tzo);
return(tzo> 0?' - ':'+')+ _pad(Math.floor(a / 60)* 100 + a%60,4);
},
P:function(){
//与GMT的区别w / colon;例如+02:00
var O = f.O();
return(O.substr(0,3)+':'+ O.substr(3,2));
},
T:function(){
//时区缩写;例如EST,MDT,...
//以下工作,但需要包含非常
// big timezone_abbreviations_list()函数。
/ * var abbr,i,os,_default;
if(!tal.length){
tal = that.timezone_abbreviations_list();
}
if(that.php_js&& that.php_js.default_timezone){
_default = that.php_js.default_timezone;
for(abbr in tal){
for(i = 0; i if(tal [abbr] [i] .timezone_id = == _default){
return abbr.toUpperCase();
}
}
}
}
for(abbr in tal){
for(i = 0; i< tal [abbr] .length ; i ++){
os = -jsdate.getTimezoneOffset()* 60;
if(tal [abbr] [i] .offset === os){
return abbr.toUpperCase();
}
}
}
* /
return'UTC';
},
Z:function(){
//时区偏移(以秒为单位)(-43200 ... 50400)
return -jsdate.getTimezoneOffset()* 60;
},

//完整日期/时间
c:function(){
// ISO-8601 date。
return'Y-m-d\\TH:i:sP'.replace(formatChr,formatChrCb);
},
r:function(){
// RFC 2822
return'D,d M Y H:i:s O'.replace(formatChr,formatChrCb);
},
U:function(){
//自UNIX时代以来的秒数
返回jsdate / 1000 | 0;
}
};
this.date = function(format,timestamp){
that = this;
jsdate =(timestamp === undefined?new Date()://未提供
(timestamp instanceof Date)?new Date(timestamp):// JS Date()
new Date (timestamp * 1000)// UNIX timestamp(auto-convert to int)
);
return format.replace(formatChr,formatChrCb);
};
return this.date(format,timestamp);
}

如此使用:

  var date_start = new Date(); 
/ *使用你喜欢的任何格式* /
console.log(date('Y-m-d',Math.floor(date_start.getTime()/ 1000)));
//甚至这个
console.log(date('Y-m-d',date_start));

输出:

 code> 2015-05-08 


I have written JavaScript code that reads text fields named leave_start and leave_end and determines the dates that fall between them. Currently, the dates I am creating look like this:

Mon Apr 6 2015 00:00:00 GMT-0400

However, I want each date to instead look like this:

Mon Apr 6 2015

As you can see, I simply want to strip off the time component. Can anyone help?


Framework: Ruby on rails 4.1.8

This is my app.js that looks at my two datepicker text fields (leave_start and leave_end).

$(document).ready(function () {

    $('.customSub').click(function () {

        var start = $('#leave_start').datepicker("getDate"),
            end = $('#leave_end').datepicker("getDate"),
            currentDate = new Date(start),
            between = [];

        while (currentDate <= end) {
            between.push(new Date(currentDate));
            currentDate.setDate(currentDate.getDate() + 1);
        }

        var formated_dates = between.reduce(function (dates, date) {
            dates.push(date.toString());
            return dates;
        }, []);
        $('#gdates').val(formated_dates.join("\n"));

    });
});

Based off the answer by @Nikos M., would this be the correct way of doing it?

$(document).ready(function() {

    $('.customSub').click(function() {

        var start = $('#leave_start').datepicker("getDate"),
            end = $('#leave_end').datepicker("getDate"),
            currentDate = new Date(start),
            between = []
        ;

        while (currentDate <= end) {
            between.push(new Date(currentDate));
            currentDate.setDate(currentDate.getDate() + 1);
        }
        var date_start = new Date();
        console.log(date('Y-m-d', date_start));

        var formated_dates = between.reduce(function(dates, date){
            dates.push(date.toString());
            return dates;
        }, []);
        $('#gdates').val(formated_dates.join("\n"));

    });
  });


Additional information

This is my index view where I would like full_range to look like Mon Apr 6 2015 instead of Mon Apr 6 2015 00:00:00 GMT-0400. I tried using .strftime('%m/%d/%y') on full_range but it didn't work. full_range is #gdates in my JavaScript.

 %table.table.table-bordered.trace-table
   %tr
   -@entry.each do |e|
     %tr
       %td.trace-table.bordered.trace-table{:style => 'width:8%;'}= e.leave_start.strftime('%m/%d/%y')
       %td.trace-table.bordered.trace-table{:style => 'width:8%;'}= e.leave_end.strftime('%m/%d/%y')
       %td.trace-table.bordered.trace-table{:style => 'width:8%;'}= e.full_range

Finally, this is my entry table:

create_table "entries"
  t.datetime "created_at"
  t.datetime "updated_at"
  t.datetime "leave_start"
  t.datetime "leave_end"
    t.string "full_range"

解决方案

There are varioius libraries around for manipulating dates in various formats like moment.js etc

What you need here is a function to convert the date into a given format. Javascript already has a limited such feature by using date.toString or date.toDate

PHP has a function to format date which has been ported to javascript on php.js project (on github) you can literaly use that function in your project (simply copy-paste it as it is standalone)

PHP date format

You can literaly format the date as you need including time, year etc.. (it is not limited as the js native date methods)

reproducing code here (taken from php.js):

function date(format, timestamp) {
  //  discuss at: http://phpjs.org/functions/date/
  // original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com)
  // original by: gettimeofday
  //    parts by: Peter-Paul Koch (http://www.quirksmode.org/js/beat.html)
  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // improved by: MeEtc (http://yass.meetcweb.com)
  // improved by: Brad Touesnard
  // improved by: Tim Wiel
  // improved by: Bryan Elliott
  // improved by: David Randall
  // improved by: Theriault
  // improved by: Theriault
  // improved by: Brett Zamir (http://brett-zamir.me)
  // improved by: Theriault
  // improved by: Thomas Beaucourt (http://www.webapp.fr)
  // improved by: JT
  // improved by: Theriault
  // improved by: Rafał Kukawski (http://blog.kukawski.pl)
  // improved by: Theriault
  //    input by: Brett Zamir (http://brett-zamir.me)
  //    input by: majak
  //    input by: Alex
  //    input by: Martin
  //    input by: Alex Wilson
  //    input by: Haravikk
  // bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // bugfixed by: majak
  // bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // bugfixed by: Brett Zamir (http://brett-zamir.me)
  // bugfixed by: omid (http://phpjs.org/functions/380:380#comment_137122)
  // bugfixed by: Chris (http://www.devotis.nl/)
  //        note: Uses global: php_js to store the default timezone
  //        note: Although the function potentially allows timezone info (see notes), it currently does not set
  //        note: per a timezone specified by date_default_timezone_set(). Implementers might use
  //        note: this.php_js.currentTimezoneOffset and this.php_js.currentTimezoneDST set by that function
  //        note: in order to adjust the dates in this function (or our other date functions!) accordingly
  //   example 1: date('H:m:s \\m \\i\\s \\m\\o\\n\\t\\h', 1062402400);
  //   returns 1: '09:09:40 m is month'
  //   example 2: date('F j, Y, g:i a', 1062462400);
  //   returns 2: 'September 2, 2003, 2:26 am'
  //   example 3: date('Y W o', 1062462400);
  //   returns 3: '2003 36 2003'
  //   example 4: x = date('Y m d', (new Date()).getTime()/1000);
  //   example 4: (x+'').length == 10 // 2009 01 09
  //   returns 4: true
  //   example 5: date('W', 1104534000);
  //   returns 5: '53'
  //   example 6: date('B t', 1104534000);
  //   returns 6: '999 31'
  //   example 7: date('W U', 1293750000.82); // 2010-12-31
  //   returns 7: '52 1293750000'
  //   example 8: date('W', 1293836400); // 2011-01-01
  //   returns 8: '52'
  //   example 9: date('W Y-m-d', 1293974054); // 2011-01-02
  //   returns 9: '52 2011-01-02'

  var that = this;
  var jsdate, f;
  // Keep this here (works, but for code commented-out below for file size reasons)
  // var tal= [];
  var txt_words = [
    'Sun', 'Mon', 'Tues', 'Wednes', 'Thurs', 'Fri', 'Satur',
    'January', 'February', 'March', 'April', 'May', 'June',
    'July', 'August', 'September', 'October', 'November', 'December'
  ];
  // trailing backslash -> (dropped)
  // a backslash followed by any character (including backslash) -> the character
  // empty string -> empty string
  var formatChr = /\\?(.?)/gi;
  var formatChrCb = function (t, s) {
    return f[t] ? f[t]() : s;
  };
  var _pad = function (n, c) {
    n = String(n);
    while (n.length < c) {
      n = '0' + n;
    }
    return n;
  };
  f = {
    // Day
    d: function () {
      // Day of month w/leading 0; 01..31
      return _pad(f.j(), 2);
    },
    D: function () {
      // Shorthand day name; Mon...Sun
      return f.l()
        .slice(0, 3);
    },
    j: function () {
      // Day of month; 1..31
      return jsdate.getDate();
    },
    l: function () {
      // Full day name; Monday...Sunday
      return txt_words[f.w()] + 'day';
    },
    N: function () {
      // ISO-8601 day of week; 1[Mon]..7[Sun]
      return f.w() || 7;
    },
    S: function () {
      // Ordinal suffix for day of month; st, nd, rd, th
      var j = f.j();
      var i = j % 10;
      if (i <= 3 && parseInt((j % 100) / 10, 10) == 1) {
        i = 0;
      }
      return ['st', 'nd', 'rd'][i - 1] || 'th';
    },
    w: function () {
      // Day of week; 0[Sun]..6[Sat]
      return jsdate.getDay();
    },
    z: function () {
      // Day of year; 0..365
      var a = new Date(f.Y(), f.n() - 1, f.j());
      var b = new Date(f.Y(), 0, 1);
      return Math.round((a - b) / 864e5);
    },

    // Week
    W: function () {
      // ISO-8601 week number
      var a = new Date(f.Y(), f.n() - 1, f.j() - f.N() + 3);
      var b = new Date(a.getFullYear(), 0, 4);
      return _pad(1 + Math.round((a - b) / 864e5 / 7), 2);
    },

    // Month
    F: function () {
      // Full month name; January...December
      return txt_words[6 + f.n()];
    },
    m: function () {
      // Month w/leading 0; 01...12
      return _pad(f.n(), 2);
    },
    M: function () {
      // Shorthand month name; Jan...Dec
      return f.F()
        .slice(0, 3);
    },
    n: function () {
      // Month; 1...12
      return jsdate.getMonth() + 1;
    },
    t: function () {
      // Days in month; 28...31
      return (new Date(f.Y(), f.n(), 0))
        .getDate();
    },

    // Year
    L: function () {
      // Is leap year?; 0 or 1
      var j = f.Y();
      return j % 4 === 0 & j % 100 !== 0 | j % 400 === 0;
    },
    o: function () {
      // ISO-8601 year
      var n = f.n();
      var W = f.W();
      var Y = f.Y();
      return Y + (n === 12 && W < 9 ? 1 : n === 1 && W > 9 ? -1 : 0);
    },
    Y: function () {
      // Full year; e.g. 1980...2010
      return jsdate.getFullYear();
    },
    y: function () {
      // Last two digits of year; 00...99
      return f.Y()
        .toString()
        .slice(-2);
    },

    // Time
    a: function () {
      // am or pm
      return jsdate.getHours() > 11 ? 'pm' : 'am';
    },
    A: function () {
      // AM or PM
      return f.a()
        .toUpperCase();
    },
    B: function () {
      // Swatch Internet time; 000..999
      var H = jsdate.getUTCHours() * 36e2;
      // Hours
      var i = jsdate.getUTCMinutes() * 60;
      // Minutes
      // Seconds
      var s = jsdate.getUTCSeconds();
      return _pad(Math.floor((H + i + s + 36e2) / 86.4) % 1e3, 3);
    },
    g: function () {
      // 12-Hours; 1..12
      return f.G() % 12 || 12;
    },
    G: function () {
      // 24-Hours; 0..23
      return jsdate.getHours();
    },
    h: function () {
      // 12-Hours w/leading 0; 01..12
      return _pad(f.g(), 2);
    },
    H: function () {
      // 24-Hours w/leading 0; 00..23
      return _pad(f.G(), 2);
    },
    i: function () {
      // Minutes w/leading 0; 00..59
      return _pad(jsdate.getMinutes(), 2);
    },
    s: function () {
      // Seconds w/leading 0; 00..59
      return _pad(jsdate.getSeconds(), 2);
    },
    u: function () {
      // Microseconds; 000000-999000
      return _pad(jsdate.getMilliseconds() * 1000, 6);
    },

    // Timezone
    e: function () {
      // Timezone identifier; e.g. Atlantic/Azores, ...
      // The following works, but requires inclusion of the very large
      // timezone_abbreviations_list() function.
      /*              return that.date_default_timezone_get();
       */
      throw 'Not supported (see source code of date() for timezone on how to add support)';
    },
    I: function () {
      // DST observed?; 0 or 1
      // Compares Jan 1 minus Jan 1 UTC to Jul 1 minus Jul 1 UTC.
      // If they are not equal, then DST is observed.
      var a = new Date(f.Y(), 0);
      // Jan 1
      var c = Date.UTC(f.Y(), 0);
      // Jan 1 UTC
      var b = new Date(f.Y(), 6);
      // Jul 1
      // Jul 1 UTC
      var d = Date.UTC(f.Y(), 6);
      return ((a - c) !== (b - d)) ? 1 : 0;
    },
    O: function () {
      // Difference to GMT in hour format; e.g. +0200
      var tzo = jsdate.getTimezoneOffset();
      var a = Math.abs(tzo);
      return (tzo > 0 ? '-' : '+') + _pad(Math.floor(a / 60) * 100 + a % 60, 4);
    },
    P: function () {
      // Difference to GMT w/colon; e.g. +02:00
      var O = f.O();
      return (O.substr(0, 3) + ':' + O.substr(3, 2));
    },
    T: function () {
      // Timezone abbreviation; e.g. EST, MDT, ...
      // The following works, but requires inclusion of the very
      // large timezone_abbreviations_list() function.
      /*              var abbr, i, os, _default;
      if (!tal.length) {
        tal = that.timezone_abbreviations_list();
      }
      if (that.php_js && that.php_js.default_timezone) {
        _default = that.php_js.default_timezone;
        for (abbr in tal) {
          for (i = 0; i < tal[abbr].length; i++) {
            if (tal[abbr][i].timezone_id === _default) {
              return abbr.toUpperCase();
            }
          }
        }
      }
      for (abbr in tal) {
        for (i = 0; i < tal[abbr].length; i++) {
          os = -jsdate.getTimezoneOffset() * 60;
          if (tal[abbr][i].offset === os) {
            return abbr.toUpperCase();
          }
        }
      }
      */
      return 'UTC';
    },
    Z: function () {
      // Timezone offset in seconds (-43200...50400)
      return -jsdate.getTimezoneOffset() * 60;
    },

    // Full Date/Time
    c: function () {
      // ISO-8601 date.
      return 'Y-m-d\\TH:i:sP'.replace(formatChr, formatChrCb);
    },
    r: function () {
      // RFC 2822
      return 'D, d M Y H:i:s O'.replace(formatChr, formatChrCb);
    },
    U: function () {
      // Seconds since UNIX epoch
      return jsdate / 1000 | 0;
    }
  };
  this.date = function (format, timestamp) {
    that = this;
    jsdate = (timestamp === undefined ? new Date() : // Not provided
      (timestamp instanceof Date) ? new Date(timestamp) : // JS Date()
      new Date(timestamp * 1000) // UNIX timestamp (auto-convert to int)
    );
    return format.replace(formatChr, formatChrCb);
  };
  return this.date(format, timestamp);
}

use as such:

var date_start = new Date();
/* use any format you like here */
console.log(date('Y-m-d', Math.floor(date_start.getTime() / 1000)));
// or even this
console.log(date('Y-m-d', date_start));

output:

2015-05-08

这篇关于将字符串转换为格式化的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆