JavaScriptで文字列をDateオブジェクトに変換するにはどうすればよいですか?
var st = "date in some format"
var dt = new Date();
var dt_st = // st in Date format, same as dt.
JavaScriptで文字列をDateオブジェクトに変換するにはどうすればよいですか?
var st = "date in some format"
var dt = new Date();
var dt_st = // st in Date format, same as dt.
文字列の解析に最適な文字列形式は、日付 ISO 形式と JavaScript の Date オブジェクト コンストラクターを組み合わせたものです。
ISO 形式の例:YYYY-MM-DD
またはYYYY-MM-DDTHH:MM:SS
.
ちょっと待って! 「ISO形式」を使用するだけでは、それ自体では確実に機能しません。文字列は UTC として解析されることもあれば、(ブラウザーのベンダーとバージョンに基づいて) ローカルタイムとして解析されることもあります。ベスト プラクティスは、常に日付を UTC として保存し、UTC として計算を行うことです。
日付を UTC として解析するには、Zを追加します- 例: new Date('2011-04-11T10:20:30Z')
.
日付を UTC で表示するには を使用し.toUTCString()
、
日付をユーザーの現地時間で表示するには を使用します.toString()
。
古い Internet Explorer との互換性 (9 未満のバージョンの IE は Date コンストラクターで ISO 形式をサポートしていません) のために、datetime 文字列表現をその部分に分割してから、datetime 部分を使用してコンストラクターを使用できます new Date('2011', '04' - 1, '11', '11', '51', '00')
。月の数は 1 少なくする必要があることに注意してください。
別の方法 - 適切なライブラリを使用します。
指定したタイム ゾーンで日付を解析できるライブラリMoment.jsを利用することもできます。
var st = "26.04.2013";
var pattern = /(\d{2})\.(\d{2})\.(\d{4})/;
var dt = new Date(st.replace(pattern,'$3-$2-$1'));
出力は次のようになります。
dt => Date {Fri Apr 26 2013}
Date() に引数として渡します。
var st = "date in some format"
var dt = new Date(st);
次の例を使用して、日付、月、年にアクセスできますdt.getMonth()
。
素晴らしい瞬間ライブラリ (Node.js プロジェクトなど) を使用できる場合は、次を使用して日付を簡単に解析できます。
var momentDate = moment("2014-09-15 09:00:00");
を介してJS日付オブジェクトにアクセスできます
momentDate ().toDate();
小型でスマートなソリューションを探している人向け:
String.prototype.toDate = function(format)
{
var normalized = this.replace(/[^a-zA-Z0-9]/g, '-');
var normalizedFormat= format.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-');
var formatItems = normalizedFormat.split('-');
var dateItems = normalized.split('-');
var monthIndex = formatItems.indexOf("mm");
var dayIndex = formatItems.indexOf("dd");
var yearIndex = formatItems.indexOf("yyyy");
var hourIndex = formatItems.indexOf("hh");
var minutesIndex = formatItems.indexOf("ii");
var secondsIndex = formatItems.indexOf("ss");
var today = new Date();
var year = yearIndex>-1 ? dateItems[yearIndex] : today.getFullYear();
var month = monthIndex>-1 ? dateItems[monthIndex]-1 : today.getMonth()-1;
var day = dayIndex>-1 ? dateItems[dayIndex] : today.getDate();
var hour = hourIndex>-1 ? dateItems[hourIndex] : today.getHours();
var minute = minutesIndex>-1 ? dateItems[minutesIndex] : today.getMinutes();
var second = secondsIndex>-1 ? dateItems[secondsIndex] : today.getSeconds();
return new Date(year,month,day,hour,minute,second);
};
例:
"22/03/2016 14:03:01".toDate("dd/mm/yyyy hh:ii:ss");
"2016-03-29 18:30:00".toDate("yyyy-mm-dd hh:ii:ss");
ただnew Date(st);
それが適切な形式であると仮定します。
new Date(2000, 10, 1)
「Wed Nov 01 2000 00:00:00 GMT+0100 (CET)」が表示されます
月の0が1月を与えることを確認してください
「dd/MM/yyyy」形式から変換したい場合。次に例を示します。
var pattern = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
var arrayDate = stringDate.match(pattern);
var dt = new Date(arrayDate[3], arrayDate[2] - 1, arrayDate[1]);
このソリューションは、IE バージョン 9 未満で機能します。
var ts = '1471793029764';
ts = Number(ts); // cast it to a Number
var date = new Date(ts); // works
var invalidDate = new Date('1471793029764'); // does not work. Invalid Date
Date.parse
ほとんどあなたが望むものを手に入れます。am
/部分でチョークしpm
ますが、いくつかのハッキングで動作させることができます:
var str = 'Sun Apr 25, 2010 3:30pm',
timestamp;
timestamp = Date.parse(str.replace(/[ap]m$/i, ''));
if(str.match(/pm$/i) >= 0) {
timestamp += 12 * 60 * 60 * 1000;
}
このためのフィドルを作成しました。任意の日付文字列で toDate() 関数を使用して、日付形式を指定できます。これにより、Date オブジェクトが返されます。 https://jsfiddle.net/Sushil231088/q56yd0rp/
"17/9/2014".toDate("dd/MM/yyyy", "/")
日付形式に変換する前に文字列の内容を確認する必要がある場合:
// Convert 'M/D/YY' to Date()
mdyToDate = function(mdy) {
var d = mdy.split(/[\/\-\.]/, 3);
if (d.length != 3) return null;
// Check if date is valid
var mon = parseInt(d[0]),
day = parseInt(d[1]),
year= parseInt(d[2]);
if (d[2].length == 2) year += 2000;
if (day <= 31 && mon <= 12 && year >= 2015)
return new Date(year, mon - 1, day);
return null;
}
ISO 8601 風の日付文字列は、標準と同様に優れていますが、まだ広くサポートされていません。
これは、どの日付文字列形式を使用する必要があるかを判断するための優れたリソースです。
http://dygraphs.com/date-formats.html
はい、それはあなたの日付文字列が
"2014/10/13 23:57:52"
それ以外の
"2014-10-13 23:57:52"
var a = "13:15"
var b = toDate(a, "h:m")
//alert(b);
document.write(b);
function toDate(dStr, format) {
var now = new Date();
if (format == "h:m") {
now.setHours(dStr.substr(0, dStr.indexOf(":")));
now.setMinutes(dStr.substr(dStr.indexOf(":") + 1));
now.setSeconds(0);
return now;
} else
return "Invalid Format";
}
//little bit of code for Converting dates
var dat1 = document.getElementById('inputDate').value;
var date1 = new Date(dat1)//converts string to date object
alert(date1);
var dat2 = document.getElementById('inputFinishDate').value;
var date2 = new Date(dat2)
alert(date2);
次のこともできます: mydate.toLocaleDateString();
この形式を使用してください....
//get current date in javascript
var currentDate = new Date();
// for getting a date from a textbox as string format
var newDate=document.getElementById("<%=textBox1.ClientID%>").value;
// convert this date to date time
var MyDate = new Date(newDate);