MySQL データベースに時刻を Unix タイムスタンプとして保存していて、JavaScript コードに送信されます。どうすればそれから時間を得ることができますか?
たとえば、HH/MM/SS
フォーマットで。
MySQL データベースに時刻を Unix タイムスタンプとして保存していて、JavaScript コードに送信されます。どうすればそれから時間を得ることができますか?
たとえば、HH/MM/SS
フォーマットで。
let unix_timestamp = 1549312452
// Create a new JavaScript Date object based on the timestamp
// multiplied by 1000 so that the argument is in milliseconds, not seconds.
var date = new Date(unix_timestamp * 1000);
// Hours part from the timestamp
var hours = date.getHours();
// Minutes part from the timestamp
var minutes = "0" + date.getMinutes();
// Seconds part from the timestamp
var seconds = "0" + date.getSeconds();
// Will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
console.log(formattedTime);
Date オブジェクトの詳細については、MDNまたはECMAScript 5 仕様を参照してください。
function timeConverter(UNIX_timestamp){
var a = new Date(UNIX_timestamp * 1000);
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var year = a.getFullYear();
var month = months[a.getMonth()];
var date = a.getDate();
var hour = a.getHours();
var min = a.getMinutes();
var sec = a.getSeconds();
var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
return time;
}
console.log(timeConverter(0));
JavaScript はミリ秒単位で動作するため、最初に UNIX タイムスタンプを秒からミリ秒に変換する必要があります。
var date = new Date(UNIX_Timestamp * 1000);
// Manipulate JavaScript Date object here...
新しい世界では、メソッドを持つ便利なコンストラクターをIntl
持つ標準の JavaScript オブジェクトに移行する必要があります。DateTimeFormat
.format()
function format_time(s) {
const dtFormat = new Intl.DateTimeFormat('en-GB', {
timeStyle: 'medium',
timeZone: 'UTC'
});
return dtFormat.format(new Date(s * 1e3));
}
console.log( format_time(12345) ); // "03:25:45"
しかし、すべてのレガシー JavaScript エンジンと 100% 互換性を持たせるために、秒をhh:mm:ss
次のようにフォーマットする最短のワンライナー ソリューションを次に示します。
function format_time(s) {
return new Date(s * 1e3).toISOString().slice(-13, -5);
}
console.log( format_time(12345) ); // "03:25:45"
メソッド
Date.prototype.toISOString()
は、簡略化された拡張ISO 8601形式で時間を返します。これは、常に24 文字または 27 文字の長さです (つまり、それぞれYYYY-MM-DDTHH:mm:ss.sssZ
または±YYYYYY-MM-DDTHH:mm:ss.sssZ
それぞれ)。タイムゾーンは常にゼロ UTC オフセットです。
このソリューションはサードパーティのライブラリを必要とせず、すべてのブラウザーと JavaScript エンジンでサポートされています。
私は、PHPの関数Date.format()
のスタイルでJavaScriptの日付フォーマットを実装するJacobWrightのライブラリに部分的です。date()
new Date(unix_timestamp * 1000).format('h:i:s')
momentjs.comのようなライブラリを使用することを検討します。これにより、これが非常に簡単になります。
Unix タイムスタンプに基づく:
var timestamp = moment.unix(1293683278);
console.log( timestamp.format("HH/mm/ss") );
MySQL 日付文字列に基づく:
var now = moment("2010-10-10 12:03:15");
console.log( now.format("HH/mm/ss") );
現時点では、UNIX タイムスタンプを使用する必要があります。
const dateTimeString = moment.unix(1466760005).format("DD-MM-YYYY HH:mm:ss");
UNIX タイムスタンプは、1970 年 1 月 1 日の 00:00:00 UTC からの秒数です ( Wikipediaによる)。
Javascript の Date オブジェクトの引数は、1970 年 1 月 1 日の 00:00:00 UTC からのミリ秒数です (W3Schools Javascript ドキュメントによると)。
例として、以下のコードを参照してください。
function tm(unix_tm) {
var dt = new Date(unix_tm*1000);
document.writeln(dt.getHours() + '/' + dt.getMinutes() + '/' + dt.getSeconds() + ' -- ' + dt + '<br>');
}
tm(60);
tm(86400);
与えます:
1/1/0 -- Thu Jan 01 1970 01:01:00 GMT+0100 (Central European Standard Time)
1/0/0 -- Fri Jan 02 1970 01:00:00 GMT+0100 (Central European Standard Time)
Moment.jsを使用すると、次のように時刻と日付を取得できます。
var dateTimeString = moment(1439198499).format("DD-MM-YYYY HH:mm:ss");
そして、これを使用して時間だけを取得できます:
var timeString = moment(1439198499).format("HH:mm:ss");
前述の解決策の問題点は、時、分、または秒が 1 桁 (つまり 0-9) しかない場合、時刻が間違っていることです。たとえば、2:3:9 になる可能性がありますが、02 にする必要があります。 03:09。
このページによると、Date の "toLocaleTimeString" メソッドを使用する方が良い解決策のようです。
別の方法 - ISO 8601の日付から。
var timestamp = 1293683278;
var date = new Date(timestamp * 1000);
var iso = date.toISOString().match(/(\d{2}:\d{2}:\d{2})/)
alert(iso[1]);
function getTIMESTAMP() {
var date = new Date();
var year = date.getFullYear();
var month = ("0" + (date.getMonth() + 1)).substr(-2);
var day = ("0" + date.getDate()).substr(-2);
var hour = ("0" + date.getHours()).substr(-2);
var minutes = ("0" + date.getMinutes()).substr(-2);
var seconds = ("0" + date.getSeconds()).substr(-2);
return year + "-" + month + "-" + day + " " + hour + ":" + minutes + ":" + seconds;
}
//2016-01-14 02:40:01
40 KB のライブラリを必要としない最新のソリューション:
Intl.DateTimeFormatは、日付/時刻をフォーマットする非文化的な帝国主義的な方法です。
// Setup once
var options = {
//weekday: 'long',
//month: 'short',
//year: 'numeric',
//day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
},
intlDate = new Intl.DateTimeFormat( undefined, options );
// Reusable formatter
var timeStamp = 1412743273;
console.log( intlDate.format( new Date( 1000 * timeStamp ) ) );
いくつかの答えでゼロの問題に注意してください。たとえば、タイムスタンプ1439329773
は誤って に変換され12/08/2015 0:49
ます。
この問題を克服するために、以下を使用することをお勧めします。
var timestamp = 1439329773; // replace your timestamp
var date = new Date(timestamp * 1000);
var formattedDate = ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2);
console.log(formattedDate);
結果は次のようになります。
12/08/2015 00:49
// Format value as two digits 0 => 00, 1 => 01
function twoDigits(value) {
if(value < 10) {
return '0' + value;
}
return value;
}
var date = new Date(unix_timestamp*1000);
// display in format HH:MM:SS
var formattedTime = twoDigits(date.getHours())
+ ':' + twoDigits(date.getMinutes())
+ ':' + twoDigits(date.getSeconds());
function timeConverter(UNIX_timestamp){
var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();
var time = hour+':'+min+':'+sec ;
return time;
}
日付/エポック コンバーターを参照してください。
する必要がありますParseInt
。そうしないと機能しません。
if (!window.a)
window.a = new Date();
var mEpoch = parseInt(UNIX_timestamp);
if (mEpoch < 10000000000)
mEpoch *= 1000;
------
a.setTime(mEpoch);
var year = a.getFullYear();
...
return time;
Unix の期間を実際の時間、分、秒に変換する場合は、次のコードを使用できます。
var hours = Math.floor(timestamp / 60 / 60);
var minutes = Math.floor((timestamp - hours * 60 * 60) / 60);
var seconds = Math.floor(timestamp - hours * 60 * 60 - minutes * 60 );
var duration = hours + ':' + minutes + ':' + seconds;