向Javascript日期对象timeObject添加10秒

时间:2011-10-07 13:23:34

标签: javascript time

如何为javascript日期对象timeObject添加10秒。 我认为这样的东西......

var timeObject = new Date()     
var seconds = timeObject.getSeconds() + 10;
timeObject = timeObject + seconds;

12 个答案:

答案 0 :(得分:352)

还有setSeconds方法:

var t = new Date();
t.setSeconds(t.getSeconds() + 10);

有关其他 Date函数的列表,you should check out MDN


setSeconds将正确处理环绕式案例:

var d;
d = new Date('2014-01-01 10:11:55');
alert(d.getMinutes() + ':' + d.getSeconds()); //11:55
d.setSeconds(d.getSeconds() + 10);
alert(d.getMinutes() + ':0' + d.getSeconds()); //12:05

答案 1 :(得分:88)

// var timeObject = new Date();

new Date(timeObject.getTime() + 10000);

答案 2 :(得分:53)

var timeObject = new Date(); 
timeObject = new Date(timeObject .getTime() + 1000*10);
console.log(timeObject);

另请参阅: How to add 30 minutes to a JavaScript Date object?

答案 3 :(得分:50)

只是为了我们中间的表现狂。

的getTime

var d = new Date('2014-01-01 10:11:55');
d = new Date(d.getTime() + 10000);

5,196,949 Ops / sec,最快

调用setSeconds

var d = new Date('2014-01-01 10:11:55');
d.setSeconds(d.getSeconds() + 10);

2,936,604 Ops / sec,慢43%

moment.js

var d = new moment('2014-01-01 10:11:55');
d = d.add(10, 'seconds');

22,549 Ops / sec,慢100%

所以也许它是最不可读的(不是那么糟糕)但是最快的方式:)

jspref online tests

答案 4 :(得分:9)

试试这个

a = new Date();
a.setSeconds(a.getSeconds() + 10);

答案 5 :(得分:4)

timeObject.setSeconds(timeObject.getSeconds() + 10)

答案 6 :(得分:3)

我有几个新变种

  1. var t = new Date(Date.now() + 10000);
  2. var t = new Date(+new Date() + 10000);

答案 7 :(得分:3)

尝试这种方式。

Date.prototype.addSeconds = function(seconds) {
  var copiedDate = new Date(this.getTime());
  return new Date(copiedDate.getTime() + seconds * 1000);
}

只需调用并分配new Date().addSeconds(10)

答案 8 :(得分:2)

javascript中的Date()对象并不是那么聪明。

如果您只是专注于添加秒,它似乎可以顺利处理事情,但如果您尝试添加X秒数,则将X分钟和小时等添加到您最终的同一Date对象中麻烦。所以我只是回过头来使用setSeconds()方法并将我的数据转换为秒(这很好)。

如果任何人都可以使用所有set方法展示为全局Date()对象添加时间并且最终时间正确,我想看到它,但我感觉到要使用一组set方法在给定的Date()对象上,混合它们会导致混乱。

var vTime = new Date();

var iSecondsToAdd = ( iSeconds + (iMinutes * 60) + (iHours * 3600) + (iDays * 86400) );

vTime.setSeconds(iSecondsToAdd);

Here is some more documentation that may help

答案 9 :(得分:2)

  1. 您可以使用setSeconds方法获取今天的秒数,只需添加10秒

    var today = new Date();
    today.setSeconds(today.getSeconds() + 10);
    
  2. 您可以在新日期添加10 * 1000毫秒:

    var today = new Date(); 
    today = new Date(today.getTime() + 1000*10);
    
  3. 您可以使用setTime

    today.setTime(now.getTime() + 10000)
    

答案 10 :(得分:1)

.setSeconds 在 node.js 下为我揭示了非常奇怪的不当行为,所以我使用:

dateAddSeconds(date, seconds){ 
    return new Date( Date.parse(date) + seconds*1000 );
}

答案 11 :(得分:0)

几年前我写了一个“通用”日期函数:

class Main {
  public static void main(final String[] args) {
    final var myFrame = new MyFrame();
    myFrame.setVisible(true);
  }

  public static class MyFrame extends JFrame {
    public MyFrame() {
      super("Example");

      final var list = new MyJList<String>();

      final var contentPane = getContentPane();
      contentPane.setLayout(new BorderLayout());
      contentPane.add(list, BorderLayout.CENTER);

      pack();
      setMinimumSize(new Dimension(160, 200));
      setLocationRelativeTo(null);
    }
  }

  public static class MyJList<T> extends JList<T> {
    private final JLabel emptyLabel = new JLabel("Selezionare un oggetto");

    {
      emptyLabel.setEnabled(false);
    }

    @Override
    public void paint(final Graphics g) {
      super.paint(g);

      if (getModel().getSize() == 0) {
        final var preferredSize = emptyLabel.getPreferredSize();
        final var listBounds = getBounds();
        final var x = (listBounds.width - preferredSize.width) / 2;
        final var y = (listBounds.height - preferredSize.height) / 2;
        final var g2 = (Graphics2D) g.create(x, y, preferredSize.width, preferredSize.height);

        try {
          emptyLabel.setBounds(0, 0, preferredSize.width, preferredSize.height);
          emptyLabel.paint(g2);
        } finally {
          g2.dispose();
        }
      }
    }
  }
}