자바 스크립트는 날짜에 선행 0을 추가합니다
dd / mm / yyyy 형식으로 10 일 동안 날짜를 계산하기 위해이 스크립트를 작성했습니다.
var MyDate = new Date();
var MyDateString = new Date();
MyDate.setDate(MyDate.getDate()+10);
MyDateString = MyDate.getDate() + '/' + (MyDate.getMonth()+1) + '/' + MyDate.getFullYear();
이 규칙을 스크립트에 추가하여 날짜와 요일 구성 요소에 날짜가 선행 0으로 표시되도록해야합니다. 작동하지 않는 것 같습니다.
if (MyDate.getMonth < 10)getMonth = '0' + getMonth;
과
if (MyDate.getDate <10)get.Date = '0' + getDate;
누군가 스크립트에 삽입 할 위치를 보여줄 수 있다면 정말 감사 할 것입니다.
이것을 시도하십시오 : http://jsfiddle.net/xA5B7/
var MyDate = new Date();
var MyDateString;
MyDate.setDate(MyDate.getDate() + 20);
MyDateString = ('0' + MyDate.getDate()).slice(-2) + '/'
+ ('0' + (MyDate.getMonth()+1)).slice(-2) + '/'
+ MyDate.getFullYear();
편집하다:
설명 을 위해 문자열 .slice(-2)
의 마지막 두 문자를 제공합니다.
어떤 일이 있어도 "0"
하루나 한 달에 추가 할 수 있으며 , 항상 두 개가 필요하기 때문에 마지막 두 개만 요청하면됩니다.
따라서 MyDate.getMonth()
반환 9
하면 다음과 같습니다.
("0" + "9") // Giving us "09"
그래서 그것을 추가 .slice(-2)
하면 마지막 두 문자가 나타납니다.
("0" + "9").slice(-2)
"09"
그러나을 MyDate.getMonth()
반환 10
하면 다음과 같습니다.
("0" + "10") // Giving us "010"
추가 .slice(-2)
하면 마지막 두 문자가 나타납니다.
("0" + "10").slice(-2)
"10"
다음은 Javascript의 Number 프로토 타입을 확장하지 않고도 사용자 정의 "pad"기능을 사용하는 Mozilla Developer Network 의 Date 오브젝트 문서 의 예입니다 . 그들이 보여주는 편리한 기능은
function pad(n){return n<10 ? '0'+n : n}
아래는 맥락에서 사용됩니다.
/* use a function for the exact format desired... */
function ISODateString(d){
function pad(n){return n<10 ? '0'+n : n}
return d.getUTCFullYear()+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+'T'
+ pad(d.getUTCHours())+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds())+'Z'
}
var d = new Date();
console.log(ISODateString(d)); // prints something like 2009-09-28T19:03:12Z
"str_pad"함수를 정의 할 수 있습니다 (php에서와 같이).
function str_pad(n) {
return String("00" + n).slice(-2);
}
이를위한 새로운 현대적인 방법은을 사용 toLocaleDateString
하는 것입니다. 적절한 현지화로 날짜를 형식화 할 수있을뿐만 아니라 형식 옵션을 전달하여 원하는 결과를 보관할 수도 있습니다.
var date = new Date(2018, 2, 1);
var result = date.toLocaleDateString("en-GB", { // you can skip the first argument
year: "numeric",
month: "2-digit",
day: "2-digit",
});
console.log(result);
첫 번째 인수를 건너 뛰면 대신 브라우저 언어가 감지됩니다. 또한 2-digit
연도 옵션도 사용할 수 있습니다 .
IE10과 같은 오래된 브라우저를 지원할 필요가 없으면 작업을 수행하는 가장 깨끗한 방법입니다. IE10 이하 버전은 옵션 인수를 이해하지 못합니다.
미래의 사람들을 위해 (ECMAScript 2017 이상)
해결책
"use strict"
const today = new Date()
const year = today.getFullYear()
const month = `${today.getMonth() + 1}`.padStart(2, 0)
const day = `${today.getDate()}`.padStart(2, 0)
const stringDate = [day, month, year].join("/") // 13/12/2017
설명
는 String.prototype.padStart(targetLength[, padString])
가능한 많은 추가 padString
에서 String.prototype
목표의 새로운 길이가되도록 타겟 targetLength
.
예
"use strict"
let month = "9"
month = month.padStart(2, 0) // "09"
let byte = "00000100"
byte = byte.padStart(8, 0) // "00000100"
Number.prototype.padZero= function(len){
var s= String(this), c= '0';
len= len || 2;
while(s.length < len) s= c + s;
return s;
}
//사용:
(function(){
var myDate= new Date(), myDateString;
myDate.setDate(myDate.getDate()+10);
myDateString= [myDate.getDate().padZero(),
(myDate.getMonth()+1).padZero(),
myDate.getFullYear()].join('/');
alert(myDateString);
})()
/* value: (String)
09/09/2010
*/
var MyDate = new Date();
var MyDateString = '';
MyDate.setDate(MyDate.getDate());
var tempoMonth = (MyDate.getMonth()+1);
var tempoDate = (MyDate.getDate());
if (tempoMonth < 10) tempoMonth = '0' + tempoMonth;
if (tempoDate < 10) tempoDate = '0' + tempoDate;
MyDateString = tempoDate + '/' + tempoMonth + '/' + MyDate.getFullYear();
나는 이것을하는 짧은 방법을 발견했다.
MyDateString.replace(/(^|\D)(\d)(?!\d)/g, '$10$2');
모든 외로운 단일 숫자에 선행 0을 추가합니다.
삼항 연산자를 사용하여 날짜를 "if"문처럼 형식화 할 수 있습니다.
예를 들면 다음과 같습니다.
var MyDate = new Date();
MyDate.setDate(MyDate.getDate()+10);
var MyDateString = (MyDate.getDate() < 10 ? '0' + MyDate.getDate() : MyDate.getDate()) + '/' + ((d.getMonth()+1) < 10 ? '0' + (d.getMonth()+1) : (d.getMonth()+1)) + '/' + MyDate.getFullYear();
그래서
(MyDate.getDate() < 10 ? '0' + MyDate.getDate() : MyDate.getDate())
getDate ()가 10보다 작은 값을 반환하면 '0'+ Date를 반환하거나 10보다 큰 경우 날짜를 반환하는 if 문과 비슷합니다. 0). 그 달도 마찬가지입니다.
편집 : getMonth가 0으로 시작한다는 것을 잊었으므로 +1을 추가하여 설명하십시오. 물론 d.getMonth () <9 :라고 말할 수도 있지만 +1을 사용하면 더 쉽게 이해할 수 있다고 생각했습니다.
인생을 편하게하고 샘플 코드를 Moment.js를 사용 하십시오 .
var beginDateTime = moment()
.format('DD-MM-YYYY HH:mm')
.toString();
// Now will print 30-06-2015 17:55
console.log(beginDateTime);
function formatDate(jsDate){
// add leading zeroes to jsDate when days or months are < 10..
// i.e.
// formatDate(new Date("1/3/2013"));
// returns
// "01/03/2103"
////////////////////
return (jsDate.getDate()<10?("0"+jsDate.getDate()):jsDate.getDate()) + "/" +
((jsDate.getMonth()+1)<10?("0"+(jsDate.getMonth()+1)):(jsDate.getMonth()+1)) + "/" +
jsDate.getFullYear();
}
여러 개의 선행 0을 추가 할 수 있지만 기본적으로 1 0을 추가하는 함수 에이 질문에 대한 정답을 감았습니다.
function zeroFill(nr, depth){
depth = (depth === undefined)? 1 : depth;
var zero = "0";
for (var i = 0; i < depth; ++i) {
zero += "0";
}
return (zero + nr).slice(-(depth + 1));
}
숫자 만 사용하고 2 자리 이하의 숫자로 작업하는 경우에도 접근 방식입니다.
function zeroFill(i) {
return (i < 10 ? '0' : '') + i
}
날짜를 형식화하기위한 매개 변수로 옵션을 제공 할 수 있습니다. 첫 번째 매개 변수는 필요하지 않은 로케일 용이고 두 번째 매개 변수는 옵션 용입니다. 자세한 내용은 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString을 방문 하십시오.
var date = new Date(Date.UTC(2012, 1, 1, 3, 0, 0));
var options = { year: 'numeric', month: '2-digit', day: '2-digit' };
console.log(date.toLocaleDateString(undefined,options));
slice
JavaScript 에서이 문제를 해결하는 또 다른 방법이 있습니다 .
var d = new Date();
var datestring = d.getFullYear() + "-" + ("0"+(d.getMonth()+1)).slice(-2) +"-"+("0" + d.getDate()).slice(-2);
datestring
예상대로 형식 의 반환 날짜 : 2019-09-01
또 다른 접근법은 dateformat
라이브러리를 사용하는 것입니다 : https://github.com/felixge/node-dateformat
내장 함수를 사용하여 패딩을 수행하는 또 다른 옵션 (그러나 코드가 너무 길어집니다!) :
myDateString = myDate.getDate().toLocaleString('en-US', {minimumIntegerDigits: 2})
+ '/' + (myDate.getMonth()+1).toLocaleString('en-US', {minimumIntegerDigits: 2})
+ '/' + myDate.getFullYear();
// '12/06/2017'
정규 표현식으로 문자열을 조작하는 또 다른 방법은 다음과 같습니다.
var myDateString = myDate.toISOString().replace(/T.*/, '').replace(/-/g, '/');
// '2017/06/12'
그러나 시작일 과 끝날이 표시 됩니다.
다음은 구성을 추출하고 연결하여 Date.protoype
구성을 적용하는 것입니다.
나는 Array
시간 청크를 저장 하는 데 사용 push()
this
했으며 Date
객체 로 사용할 때 반복 할 길이를 반환합니다. 끝나면, 내가 사용할 수있는 join
온 return
값입니다.
이것은 매우 빠르게 작동하는 것 같습니다 : 0.016ms
// Date protoype
Date.prototype.formatTime = function (options) {
var i = 0,
time = [],
len = time.push(this.getHours(), this.getMinutes(), this.getSeconds());
for (; i < len; i += 1) {
var tick = time[i];
time[i] = tick < 10 ? options.pad + tick : tick;
}
return time.join(options.separator);
};
// Setup output
var cfg = {
fieldClock: "#fieldClock",
options: {
pad: "0",
separator: ":",
tick: 1000
}
};
// Define functionality
function startTime() {
var clock = $(cfg.fieldClock),
now = new Date().formatTime(cfg.options);
clock.val(now);
setTimeout(startTime, cfg.options.tick);
}
// Run once
startTime();
데모 : http://jsfiddle.net/tive/U4MZ3/
내가 할 일은 다음과 같은 나만의 맞춤 날짜 도우미를 만드는 것입니다.
var DateHelper = {
addDays : function(aDate, numberOfDays) {
aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
return aDate; // Return the date
},
format : function format(date) {
return [
("0" + date.getDate()).slice(-2), // Get day and pad it with zeroes
("0" + (date.getMonth()+1)).slice(-2), // Get month and pad it with zeroes
date.getFullYear() // Get full year
].join('/'); // Glue the pieces together
}
}
// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Add 20 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), 20));
( 이 바이올린 참조 )
필요한 경우 앞에 0을 허용하는 패딩을 추가하고 선택한 구분 기호를 문자열로 사용하여 연결하십시오.
Number.prototype.padLeft = function(base,chr){
var len = (String(base || 10).length - String(this).length)+1;
return len > 0? new Array(len).join(chr || '0')+this : this;
}
var d = new Date(my_date);
var dformatted = [(d.getMonth()+1).padLeft(), d.getDate().padLeft(), d.getFullYear()].join('/');
@John Henckel이 제안 했듯이 toISOString () 메서드를 사용하면 작업이 쉬워집니다.
const dateString = new Date().toISOString().split('-');
const year = dateString[0];
const month = dateString[1];
const day = dateString[2].split('T')[0];
console.log(`${year}-${month}-${day}`);
@ modiX 답변에 추가하면 이것이 작동합니다 ... 빈 상태로 두지 마십시오
today.toLocaleDateString("default", {year: "numeric", month: "2-digit", day: "2-digit"})
let date = new Date();
let dd = date.getDate();//day of month
let mm = date.getMonth();// month
let yyyy = date.getFullYear();//day of week
if (dd < 10) {//if less then 10 add a leading zero
dd = "0" + dd;
}
if (mm < 10) {
mm = "0" + mm;//if less then 10 add a leading zero
}
라이브러리가 필요없는 기본 기능을 위해 이것을 시도하십시오.
Date.prototype.CustomformatDate = function() {
var tmp = new Date(this.valueOf());
var mm = tmp.getMonth() + 1;
if (mm < 10) mm = "0" + mm;
var dd = tmp.getDate();
if (dd < 10) dd = "0" + dd;
return mm + "/" + dd + "/" + tmp.getFullYear();
};
참고 URL : https://stackoverflow.com/questions/3605214/javascript-add-leading-zeroes-to-date
'Programming' 카테고리의 다른 글
TSQL에서 줄 바꿈 바꾸기 (0) | 2020.02.23 |
---|---|
iOS 9의 새로운 경고 :“모든 비트 코드가 삭제됩니다” (0) | 2020.02.23 |
Java에서 (a * b! = 0)이 (a! = 0 && b! = 0)보다 빠른 이유는 무엇입니까? (0) | 2020.02.23 |
SQL Server 쿼리-DISTINCT를 사용하여 COUNT (*) 선택 (0) | 2020.02.22 |
PowerShell에서 함수에 여러 매개 변수를 전달하는 방법은 무엇입니까? (0) | 2020.02.22 |