jquery

时间:2016-02-18 23:30:08

标签: jquery

我需要以这种格式创建日期:

2016-02-18T13:24:10-08:00

年 - 月 - dayThour:分钟:secondsTIMEZONE

我试试这个:

var currentTime = new Date();

var year = currentTime.getFullYear();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var hour = currentTime.getHours();
var min = currentTime.getMinutes();
var secs = currentTime.getSeconds();


var time = year + "-" + month + "-" + day + "T" + hour + ":" + min + ":" + secs;

alert(time);

但我有两个问题:

1)如果只有一个数字,我需要所有的值都为零。

例如,

今天打印2016-2-18。我需要这个2才能成为02。

2)如何获得示例中的时区?

-08:00
+03:00
...

https://jsfiddle.net/1vxpobbw/

谢谢你的朋友们!

3 个答案:

答案 0 :(得分:2)

<强> 1)

您只需要使用所需的零数填充值

function ZeroPad(str, n)
{
    while( str.length < n )
    {
        str = '0' + str;
    }
    return str;
}

你有month = 2

只需致电

ZeroPad( month, 2 )

你会得到

02

<强> 2)

要获得时区偏移(如果我理解了这个问题),请看这里

Getting the client's timezone in JavaScript

正如你所做的那样,偏移就像你使用小时日期一样。

答案 1 :(得分:2)

也许你应该像这样编码?

&#13;
&#13;
var currentTime = new Date();

var year = currentTime.getFullYear();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var hour = currentTime.getHours();
var min = currentTime.getMinutes();
var secs = currentTime.getSeconds();

// Checking if the numbers are lower from 10, then add 0 before of it
if(year < 10) year = "0" + year
if(month < 10) month = "0" + month
if(day < 10) day = "0" + day
if(min < 10) min = "0" + min
if(hour < 10) hour = "0" + hour
if(secs < 10) secs = "0" + secs

var time = year + "-" + month + "-" + day + "T" + hour + ":" + min + ":" + secs;

alert(time);
&#13;
&#13;
&#13;

检查hourminsecs是否低于10.如果是,则添加&#34; 0&#34;之前。

答案 2 :(得分:1)

好的,这是完整的答案,包括填充日期以及添加GMT的时区差异。

$( document ).ready(function() {
  var currentTime = new Date();

  var year = currentTime.getFullYear();
  var month = currentTime.getMonth() + 1;
  var day = currentTime.getDate();
  var hour = currentTime.getHours();
  var min = currentTime.getMinutes();
  var secs = currentTime.getSeconds();
  var timezoneOffset = currentTime.getTimezoneOffset();
  var offsetHours = Math.floor(timezoneOffset / 60);
  var offsetMinutes = timezoneOffset % 60;

  if(month < 10) month = "0" + month;
  if(day < 10) day = "0" + day;
  if(min < 10) min = "0" + min;
  if(hour < 10) hour = "0" + hour;
  if(secs < 10) secs = "0" + secs;
  if(offsetHours < 10) offsetHours = "0" + offsetHours;
  if(offsetMinutes < 10) offsetMinutes = "0" + offsetMinutes;

  var time = year + "-" + month + "-" + day + "T" + hour + ":" + min + ":" + secs + (offsetHours > 0 ? "+": "-") + offsetHours + ":" + offsetMinutes;

  alert(time);

});