JavaScriptでタイムスタンプを人間の日付に変換する関数


83

このタイムスタンプ13820863940002013-10-18 08:53:14javascriptの関数を使用するように変換するにはどうすればよいですか?現在、私はこの機能を持っています:

function cleanDate(d) {return new Date(+d.replace(/\/Date\((\d+)\)\//, '$1'));}

10
ここでのすべての答えに加えて、jsの日付/時刻処理の事実上の標準は現在moment.jsであり、誰もここで言及していないことに驚いています
alonisser 2014年

2
@ alonisser-おそらく、時間値を日付に変換するのは簡単だからです。フォーマットも特に難しいことではありません。
RobG 2014

回答:


130

1382086394000は、おそらく時間値であり、1970-01-01T00:00:00Zからのミリ秒数です。これを使用して、Dateコンストラクターを使用してECMAScriptDateオブジェクトを作成できます。

var d = new Date(1382086394000);

それを読みやすいものに変換する方法はあなた次第です。単に出力に送信するだけで、内部の(そして完全に実装に依存する) toStringメソッド*を呼び出す必要があります。このメソッドは通常、同等のシステム時間を人間が読める形式で出力します。

Fri Oct 18 2013 18:53:14 GMT+1000 (EST) 

ES5には、他にもいくつかの組み込みのフォーマットオプションがあります。

等々。ほとんどは実装に依存しており、ブラウザによって異なることに注意してください。すべてのブラウザで同じ形式が必要な場合は、日付を自分でフォーマットする必要があります。例:

alert(d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear());

* Date.prototype.toStringの形式は、ECMAScript2018で標準化されています。すべての実装でユビキタスになるまでにはしばらく時間がかかるかもしれませんが、少なくともより一般的なブラウザが現在それをサポートしています。


togmtstring()もありますが、非推奨です。JSのようにtolocalestring()がある理由がわかりません。すべてがブラウザでローカルです。または、toLocaleStringはNodejsへの分離ですか?サーバーサイドJSを使用していて、クライアントとサーバーのタイムゾーンが異なる場合、クライアントゾーンを取得しますか?
ティモ

1
@ timo-「ロケール」の使用は、ユーザーのフォーマット設定と一致するフォーマットを提示しようとするメソッドの誤称です。残念ながら、それは言語に基づいていますが、これは好ましい形式の特に良い決定要因ではありません。それほど具体的でない言語コードではなく、日付フォーマットのシステム環境設定に基づいて日付をフォーマットすることをお勧めします。
RobG

32

これは正常に機能します。chromeブラウザでチェックイン:

var theDate = new Date(timeStamp_value * 1000);
dateString = theDate.toGMTString();
alert(dateString );

8
toGMTString()は非推奨です。代わりに、toISOString()またはtoUTCString()を使用してください
Nicolas Leucci 2016年

注意*-*:を掛けないでください1000。そうでなければ、あなたは未来の宇宙にハイパーループするでしょう!
vrintle

2
乗算1586855504 1000とした後、私はそれが1970を提供していたそうでない場合は右の結果を得た
Warewolf

1000の乗算は、タイムスタンプの秒数またはミリ秒数によって異なります
Tejashwi KalpTaru20年

27

なぜ単純ではないのですか

new Date (timestamp);

日付は日付であり、そのフォーマットは別の問題です。


21

Moment.jsは、UNIXタイムスタンプを任意のカスタム形式に変換できます

この場合 : var time = moment(1382086394000).format("DD-MM-YYYY h:mm:ss");

印刷し18-10-2013 11:53:14ます;

これを示すプランカーがあります。


このような音は行き過ぎです
ʎzɐɹƆ

ありがとう。これは本当に私を助けました。
AkramChauhan20年

13

すべての日付形式の混乱に対する簡単な方法は次のとおりです。

現在の日付の場合:

var current_date=new Date();

現在の日付のタイムスタンプを取得するには:

var timestamp=new Date().getTime();

特定の日付をタイムスタンプに変換するには:

var timestamp_formation=new Date('mm/dd/yyyy').getTime();

タイムスタンプを日付に変換するには:

    var timestamp=new Date('02/10/2016').getTime();
    var todate=new Date(timestamp).getDate();
    var tomonth=new Date(timestamp).getMonth()+1;
    var toyear=new Date(timestamp).getFullYear();
    var original_date=tomonth+'/'+todate+'/'+toyear;

  OUTPUT:
 02/10/2016

はい@melpomene、コードの半分は無関係ですが、日付の形成に関するさらなる疑問を解消するためにそれを書きました.. !!!そしてもう1つどこからもコピーしませんでした。私は自分のコードでそれを試し、2日前に作業しました
トロイの木馬

1
文字通りコピーしたかどうかは関係ありません。重要なのは、すべての情報がすでに別の答えにあるということです。ちなみに、あなたの最後の例は、あなたが主張する出力を実際には生成しません。
メルポメネ2016

表示されている出力は実際にはコード出力と一致しません(2016年2
SuyashMittal20年

9

JavaScriptを使用して新しい関数を作成する必要があります。

function unixTime(unixtime) {

    var u = new Date(unixtime*1000);

      return u.getUTCFullYear() +
        '-' + ('0' + u.getUTCMonth()).slice(-2) +
        '-' + ('0' + u.getUTCDate()).slice(-2) + 
        ' ' + ('0' + u.getUTCHours()).slice(-2) +
        ':' + ('0' + u.getUTCMinutes()).slice(-2) +
        ':' + ('0' + u.getUTCSeconds()).slice(-2) +
        '.' + (u.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) 
    };

console.log(unixTime(1370001284))

2016-04-30 08:36:26.000

3

formatDate これを呼び出して、フォーマットする日付を渡すことができる関数です。 dd/mm/yyyy

var unformatedDate = new Date("2017-08-10 18:30:00");
 
$("#hello").append(formatDate(unformatedDate));
function formatDate(nowDate) {
	return nowDate.getDate() +"/"+ (nowDate.getMonth() + 1) + '/'+ nowDate.getFullYear();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hello">


</div>


2

これは私がInstagramAPIに対して行ったことです。1000を掛けて、日付メソッドでタイムスタンプを変換し、すべてのエンティティを(年、月など)のように個別に追加しました

カスタム月リスト名を作成しgetMonth()、月のインデックスを返すメソッドでマップしました。

convertStampDate(unixtimestamp){

// Unixtimestamp

// Months array
var months_arr = ['January','February','March','April','May','June','July','August','September','October','November','December'];

// Convert timestamp to milliseconds
var date = new Date(unixtimestamp*1000);

// Year
var year = date.getFullYear();

// Month
var month = months_arr[date.getMonth()];

// Day
var day = date.getDate();

// Hours
var hours = date.getHours();

// Minutes
var minutes = "0" + date.getMinutes();

// Seconds
var seconds = "0" + date.getSeconds();

// Display date time in MM-dd-yyyy h:m:s format
var fulldate = month+' '+day+'-'+year+' '+hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

// filtered fate
var convdataTime = month+' '+day;
return convdataTime;
}

スタンプ引数で呼び出す convertStampDate('1382086394000')

以上です。


1

私のES6バリアントは、このような文字列を生成します2020-04-05_16:39:45.85725。必要な形式を取得するために、returnステートメントを自由に変更してください。

const getDateStringServ = timestamp => {

  const plus0 = num => `0${num.toString()}`.slice(-2)

  const d = new Date(timestamp)

  const year = d.getFullYear()
  const monthTmp = d.getMonth() + 1
  const month = plus0(monthTmp)
  const date = plus0(d.getDate())
  const hour = plus0(d.getHours())
  const minute = plus0(d.getMinutes())
  const second = plus0(d.getSeconds())
  const rest = timestamp.toString().slice(-5)

  return `${year}-${month}-${date}_${hour}:${minute}:${second}.${rest}`
}

-2

指定された日付からタイムスタンプで日付を計算するには

//通常の日付からタイムスタンプの日付を取得するには:形式-1560105000000

//入力日は次の形式にすることができます: "2019-06-09T18:30:00.000Z"

this.calculateDateInTimestamp = function (inputDate) {
    var date = new Date(inputDate);
    return date.getTime();
}

出力:1560018600000

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.