検索
ホームページウェブフロントエンドjsチュートリアル分前、数時間前、数日前などの時差表示効果を実装するJSとjqueryを使用したコード例の共有_javascriptスキル

同様の機能を実現するには、JS を使用できます。実装方法は次のとおりです。

1. JavaScript 関数の実装:

例 1:

コードをコピーします コードは次のとおりです:
//JavaScript 関数:
var 分 = 1000 * 60;
var 時 = 分 * 60;
var 日 = 時 * 24;
var 半月 = 日 * 15 ;
var month = day * 30;
function getDateDiff(dateTimeStamp){
var now = new Date().getTime();
var diffValue = now - dateTimeStamp;
if( diffValue //日付が一致しない場合は、ポップアップ ウィンドウで通知されます
//alert("終了日を開始日より小さくすることはできません!");
}
var monthC =diffValue/month;
var weekC =diffValue/(7*day);
var dayC =diffValue/day;
varhourC =diffValue/hour;
var minC =diffValue/分;
if(monthC>= 1){
result=""parseInt(monthC) "数か月前に公開";
}
else if(weekC>=1) {
result="1 週間前に「parseInt(weekC ) 」に公開されました";
}
else if(dayC>=1){
result="parseInt(dayC) " 日に公開されましたago";
}
else if(hourC>=1){
result="投稿日" parseInt(hourC) "時間前";
}
else if(minC>= 1){
result="「parseInt(minC) "分前に投稿されました」;
}else
result="公開されたばかりです";
return result;
}

取得した時刻形式がタイムスタンプではない場合、次の JavaScript 関数を使用して文字列をタイムスタンプに変換できます。この関数の機能は strtotime の JS バージョンと同等です:


コードをコピーします コードは次のとおりです:
//js 関数コード: 文字列をタイムスタンプに変換します
function getDateTimeStamp( dateStr){
return Date.parse(dateStr.replace(/-/gi,"/"));
}

例 2:


コードをコピー コードは次のとおりです:
<script>function jsDateDiff(publishTime){ d = timeNow - publicTime; <BR> d_days = parseInt(d/3600); d_ minutes = parseInt(d/60); 4){d_hours&lt; = 0 && d_minutes&gt; 0){s.getmonth()1) "s.getdate()" day "; 🎜> } } <BR>} <BR></script>



2. jquery プラグインの実装

HTML コード:




コードをコピー


コードは次のとおりです:


">


呼び出しコード:


コードをコピー

コードは次のとおりです: jQuery(" span.timeago ").timeago();

プラグインのソース コード:

コードをコピー コードは次のとおりです:

(function (factory) {
if (typeof define === 'function' &&define.amd) {
// AMD。匿名モジュールとして登録します。
define([ 'jquery'], Factory);
} else {
// ブラウザー グローバル
Factory(jQuery);
}
}(function ($) {
$.timeago = function(timestamp) {
if (timestamp instanceof Date) {
return inWords(timestamp);
} else if (typeof timestamp === "string") {
return inWords($.timeago) .parse(timestamp));
} else if (typeof timestamp === "number") {
return inWords(new Date(timestamp));
} else {
return inWords($ .timeago.datetime(timestamp));
}
};
var $t = $.timeago;

$.extend($.timeago, {
settings: {
refreshMillis: 60000、
allowFuture: false、
localeTitle: false、
カットオフ: 0、
文字列: {
prefixAgo: null、
prefixFromNow: null、
suffixAgo: "前",
suffixFromNow: "今から",
秒: "1分钟",
分: "1分钟",
分: "%d分钟",
時間: "1小時間",
時間: "%d小時間",
日: "1天",
日: "%d天",
月: "1月"、
月: "%d 月",
年: "1 年",
年: "%d 年",
wordSeparator: "",
数字: []
}
},
inWords: function( distanceMillis) {
var $l = this.settings.strings;
var prefix = $l.prefixAgo;
var suffix = $l.suffixAgo ;
if (this.settings.allowFuture) {
if ( distanceMillis 接頭辞 = $l.prefixFromNow;
接尾辞 = $l.suffixFromNow;
}
}

var 秒 = Math.abs( distanceMillis) / 10 00;
var minutes = 秒 / 60;
var hours = minutes / 60;
var days = 時間 / 24;
var years = days / 365;

関数置換(stringOrFunction,数値) {
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
var value = ($l.numbers && $l.numbers[number]) ||数値;
return string.replace(/%d/i, value);
}

var word = 秒
45 &&stitute($l.秒, Math.round(秒)) ||
秒 分 分 時間 時間 日 日 日 年 replace($l.years, Math.round(years));

var separator = $l.wordSeparator || "";
if ($l.wordSeparator === 未定義) { separator = " "; }
return $.trim([プレフィックス, 単語, サフィックス].join(separator));
},
parse: function(iso8601) {
var s = $.trim(iso8601) ;
s = s.replace(/.d /,""); // ミリ秒を削除します
s = s.replace(/-/,"/").replace(/-/,"/");
s = s.replace(/T/," ")。 replace(/Z/," UTC");
s = s.replace(/([ -]dd):?(dd)/," $1$2"); // -04:00 -> -0400
return 新しい日付;
},
datetime: function(elem) {
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
return $t.parse(iso8601);
},
isTime: function(elem) {
// jQuery の `is()` は IE の HTML5 とうまく連携しません
return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
}
});

// $(el).timeago('action') // アクションが指定されない場合、init はデフォルトです
// 関数は単一要素のコンテキストで呼び出されます
var function = {
init: function(){
var fresh_el = $. proxy(refresh, this);
refresh_el();
var $s = $t.settings;
if ($s.refreshMillis > 0) {
setInterval(refresh_el, $s. freshMillis);
}
},
update: function(time){
$(this).data('timeago', { datetime: $t.parse(time) });
fresh.apply(this);
},
updateFromDOM: function(){
$(this).data('timeago', { datetime: $t.parse( $t.isTime( this) ? $(this).attr("datetime") : $(this).attr("title") ) });
fresh.apply(this);
}
};

$.fn.timeago = function(action, options) {
var fn = アクション ? function[action] :functions.init;
if(!fn){
throw new Error("Unknown function name '" action "' for timeago");
}
// それぞれ終了ここにオブジェクトを配置し、要求された関数を呼び出します
this.each(function(){
fn.call(this, options);
});
return this;
};

function fresh() {
var data = prepareData(this);
var $s = $t.settings;

if (!isNaN(data.datetime)) {
if ( $s.cutoff == 0 || distance(data.datetime) $(this).text(inWords(data.datetime));
}
}
return this;
}

function prepareData(element) {
element = $(element);
if (!element.data("timeago")) {
element.data("timeago", { datetime: $t.datetime(element) });
var text = $.trim(element.text());
if ($t.settings.localeTitle) {
element.attr("title", element.data('timeago' ).datetime.toLocaleString());
} else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
element.attr ("title", text);
}
}
return element.data("timeago");
}

function inWords(date) {
return $ t.inWords( distance(date));
}

function distance(date) {
return (new Date().getTime() - date.getTime());
}

// IE6 の吸い込みを修正
document.createElement("abbr");
document.createElement("time");
}));
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptをインストールするにはどうすればよいですか?JavaScriptをインストールするにはどうすればよいですか?Apr 05, 2025 am 12:16 AM

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

クォーツでタスクが開始される前に通知を送信する方法は?クォーツでタスクが開始される前に通知を送信する方法は?Apr 04, 2025 pm 09:24 PM

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...

JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?Apr 04, 2025 pm 09:21 PM

JavaScriptプログラミング、プロトタイプチェーンの関数パラメーターの理解と操作のJavaScriptのプロトタイプチェーンの関数のパラメーターを取得する方法は、一般的で重要なタスクです...

WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?Apr 04, 2025 pm 09:18 PM

WeChatアプレットWeb-ViewでVue.jsを使用する動的スタイルの変位障害がvue.jsを使用している理由の分析...

TamperMonkeyで複数のリンクの同時GETリクエストを実装し、順番に戻る結果を決定する方法は?TamperMonkeyで複数のリンクの同時GETリクエストを実装し、順番に戻る結果を決定する方法は?Apr 04, 2025 pm 09:15 PM

複数のリンクの同時ゲットリクエストを作成し、結果を返すために順番に判断する方法は? TamperMonkeyスクリプトでは、複数のチェーンを使用する必要があることがよくあります...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい