ホームページ >ウェブフロントエンド >jsチュートリアル >Ext JS 4 は週による日付選択制御を実装します (実践戦闘 2)_extjs

Ext JS 4 は週による日付選択制御を実装します (実践戦闘 2)_extjs

WBOY
WBOYオリジナル
2016-05-16 17:24:591165ブラウズ
はじめに

JavaScript での日付と時刻
Ext JS 4 は週による日付選択コントロールを実装します (実践 1)

この記事の予備知識について詳しく知りたい場合は、上記の 2 つの記事を参照してください。
JavaScript は処理時間の Date オブジェクトを提供します。ただし、Date には曜日を取得するメソッドがありません。
Web 側で js を介して特定の期間の週を取得したい場合は、いくつかのアルゴリズムに従って実装できます。 もちろん、jquery の拡張コンポーネントは、そのような既製のパッケージを直接提供します。
Ext jsと同様に、Ext.Date.getWeekOf Year(date)というメソッドがあり、

質問

Ext JSを使用しているかどうか、完璧です 今週の問題を解くのはどうですか?
このシリーズの最初の記事で述べたように、Ext の datepicker は曜日を確認できないため、自分で拡張する必要があります。
しかし、展開するときに問題があります:
JavaScript 言語の Date オブジェクトは毎週日曜日に始まります。
Ext JS の getWeekOfyear メソッドは ISO-8601 に従っており、各週は月曜日に始まります。 (他のメソッドはこの標準に従っておらず、Ext JS ではさまざまな日付と時刻の表現標準が混在しています)。
Ext.Date.getWeekOfyear このメソッドの戻り値は 1 ~ 53 の数値です。
この場合、いくつかの問題が発生します。
Ext js の日付表示コントロールは日曜日から始まります: (S M T W T F S (Sunday, Monday, Tuesday...Saturday))
ただし、日付表示コントロールは選択した時間を通じて取得されます。週は再び日曜日から始まります。結果:

1. 各日曜日の週は 1 ずつ小さくなります (たとえば、2013/08/18 の日曜日は 34 週になるはずですが、この方法では前の週の終わりとしてカウントされます)週、33 週)
コードをコピー コードは次のとおりです:

date = 新しい日付("2013/08/18") ;
var year = Ext.Date.getWeekOf Year(date);
alert("week=" 週); JS の日付コントロールはデフォルトで次のように 42 日を表示します。そうであれば、2 つの年が相互作用するという問題が発生します。
現在の年は 53 週を表示していますか? まだ来年の第一週です。


解決策

jsのDateオブジェクトとExt jsのExt.Dateを組み合わせて曜日文字列を取得します。 1. 日曜日は週の最初の日です
2. 1 年の週数は (1 ~ 52) で、52 週を超える場合は翌年の最初の週にカウントされます。 。 たとえば、2013/12/29 は 2014 年の最初の週から数えて 2013 年の 53 週目です
3. 「W1334」という週形式を返します



コードをコピーします コードは次のとおりです: /*
* return as W1334()2013/08/20
* 1. if sunday==> ; 週 = 第 1 週
* getWeekOf Year(Ext use ISO-8601,week begin monday)
* js Date(週の始まりは日曜日)
* 2. if 週 > 52==> ; 年 = 年 1; 週 = 週 - 52; 月 ==11 (12 月) および週
*/
関数getWeekStrOfDate(date)
{
var yearStr = null;
if(date!=null)
{
weekStr = "W"
var date Year = date.getFullyear() ;
var dateWeek = Ext.Date.getWeekOfyear(date);
var firstDayOfMonth = Ext.Date.getFirstDayOfMonth(date);
var day = date.getDate(); .getMonth() ;
//曜日 0-6
var Weekday = date.getDay();
if(weekday===0)
{
dateWeek ;

// 週>52 ==> 年 1
if(月==11)
{
if(dateWeek>52)
{
日付年 = 1 ;
dateWeek -= 52;
}else if(dateWeek<2){
date Year = 1;
}
var yearStr = date Year.toString(); >yearStr = yearStr .substring(2,4);
var dateWeekStr = dateWeek.toString();
if(dateWeekStr.length{
dateWeekStr = "0" dateWeekStr; 🎜>}
weekStr = yearStr;
weekStr = dateWeekStr;
return
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。