在JavaScript中获取下一个15日的日期

时间:2015-06-03 05:34:36

标签: javascript date

我需要使用以下格式的下一个15日期:15.06.2015 23:59:59

示例:

  • 所以今天 03.06.2015 将是15.06.2015 23:59:59
  • on 12.08.2015 它将是15.08.2015 23:59:59
  • 18.02.2015 将是15.03.2015 23:59:59

我需要几秒钟的结果。

我知道如何在PHP中执行此操作,但未能使其与JavaScript一起使用。

非常感谢你的帮助!

4 个答案:

答案 0 :(得分:6)

您可以尝试类似

的内容

var date = new Date();
//if 15th of current month is over move to next month
//need to check whether to use >= or just > ie on 15th Jun 
//if you want 15 Jun then use > else if you want 15 Jul use >=
var dt = date.getDate();
date.setDate(15);
if (dt >= 15) {
  date.setMonth(date.getMonth() + 1);
}
date.setHours(23, 59, 59, 0);
document.write(date)

如果您想要一个返回新日期对象的函数

function setNext15(date) {
    var next = new Date(date);
    var cache = next.getDate();
    next.setDate(15);
    if (cache >= 15) {
        next.setMonth(date.getMonth() + 1);
    }
    next.setHours(23, 59, 59, 0);
    console.log(next, date);
    return next;
}

演示:Fiddle

答案 1 :(得分:2)

请尝试使用以下代码段。

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var d1 = new Date();
if(d1.getDate() > 15)
{
  d1.setDate(d1.getDate() + 17);
}
var d2 = new Date(d1.getFullYear(),d1.getMonth(),15,23,59,59,0);
document.getElementById("demo").innerHTML = d2.getDate()+"."+d2.getMonth()+ "." + d2.getFullYear()+ " " + d2.getHours()+":"+ d2.getMinutes() + ":" + d2.getSeconds();

</script>

</body>
</html>

如果您需要更多信息,请与我们联系。

答案 2 :(得分:0)

function next15th(d) {
    // prevent mutation of original date
    var copy = new Date(d.getTime());
    if (copy.getDate() >= 15) {
        // not in the same month
        copy.setMonth(copy.getMonth() + 1);
    }
    copy.setDate(15);
    copy.setHour(23, 59, 59);
    return copy;
}

var d = new Date();
console.log(d);
//> Wed Jun 03 2015 09:04:24 GMT+0300 (EEST)
console.log(next15th(d));
//> Mon Jun 15 2015 23:59:59 GMT+0300 (EEST)
console.log(d);
//> Wed Jun 03 2015 09:04:24 GMT+0300 (EEST)

答案 3 :(得分:0)

给出字符串:

try {
    POIFSFileSystem fs = new POIFSFileSystem(input);
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    HSSFSheet sheet = wb.getSheetAt(0);
    Row row;
    for (int i = 1; i <= sheet.getLastRowNum(); i++) {
        row = sheet.getRow(i);
        RichTextString CEDGE_INVOICE_NUMBER = row.getCell(0).getRichStringCellValue();
        Date INVOICE_DATE = row.getCell(1).getDateCellValue();
        System.out.println(INVOICE_DATE);
        String sql = "INSERT INTO tablename VALUES('" + CEDGE_INVOICE_NUMBER + "','" + INVOICE_DATE + "')";
        pstm = (PreparedStatement) con.prepareStatement(sql);
        pstm.execute();
        System.out.println("Import rows " + i);
    }
    con.commit();
    pstm.close();
    con.close();
    input.close();
    System.out.println("Success import excel to mysql table");
} catch (ClassNotFoundException e) {
    System.out.println(e);
} catch (SQLException ex) {
    System.out.println(ex);
} catch (IOException ioe) {
    System.out.println(ioe);
}       

你可以使用一系列小函数获得接下来的第15个:

var dateString = '15.06.2015 23:59:59';

或者您可以将它们组合在一个功能中:

// Parse string in format d/m/y h:m:s
function parseDMY(s) {
  var b = s.split(/\D/);
  return new Date(b[2], b[1]-1, b[0], b[3], b[4], b[5]);
}

// Format date as dd.mm.yyyy hh:mm:ss
function formatDMY(date) {
  function z(n){return (n<10?'0':'') + n}
  return z(date.getDate()) + '.' + z(date.getMonth()+1) + '.' + date.getFullYear() + ' ' +
         z(date.getHours()) + ':' + z(date.getMinutes()) + ':' + z(date.getSeconds());
}

// Set to next 15th
function getNext15th(date) {
  if (date.getDate() >= 15) {
    date.setMonth(date.getMonth() + 1);
  }
  date.setDate(15);
  return date;
}

// Calling each sequentially 
console.log(formatDMY(getNext15th(parseDMY(dateString)))); // 15.07.2015 23:59:59

这实际上取决于您需要从函数中重用多少。