머리말 JavaScript의 날짜와 시간 Ext JS 4에서는 주를 사용하여 날짜 선택 제어를 구현합니다(연습 1) 이 글의 몇 가지 준비 지식에 대해 더 알고 싶다면 위의 두 글을 참고하세요.
Javascript는 처리 시간에 대한 Date 객체를 제공합니다. 그러나 Date는 요일을 얻는 방법을 제공하지 않습니다.
웹 측에서 js를 통해 특정 시간의 한 해의 주를 얻으려면 일부 알고리즘에 따라 구현할 수 있습니다. 물론 jquery의 확장 구성 요소는 이러한 기성 패키지를 직접 제공합니다.
Ext js와 마찬가지로 Ext.Date.getWeekOfYear(날짜)를 구하는 메소드가 있습니다.
Question 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주)
날짜 = 새 날짜 ("2013/08/18") ;
var week = Ext.Date.getWeekOfYear(date);
alert("week=" week)
2. Js 날짜 제어는 기본적으로 42일을 표시하는데, 그렇다면 2년이 상호 작용하는 문제가 발생합니다.
올해가 53주를 표시합니까? 아직은 내년 첫주네요.
해결 방법 js의 Date 객체와 Ext js의 Ext.Date를 결합하여 요일 문자열을 얻습니다.
1. 일요일은 한 주의 첫날입니다
2. 1년의 주 수는 (1~52)이며, 52주를 초과하면 다음 해의 첫 주로 계산됩니다. . 예를 들어, 2013/12/29는 2013년의 53번째 주이며, 2014년의 첫 주로 계산됩니다.
3. 주 형식과 같은 "W1334"를 반환합니다
/*
* return as W1334()2013/08/20
* 1. if sunday==> ; 주 = 주 1
* getWeekOfYear(Ext use ISO-8601,week start Monday)
* js Date(week start sunday)
* 2. if week > ; 연도 = 1년; 주 = 52주;
* 3. 월 ==11(12월) 및 주
*/
함수 getWeekStrOfDate(날짜)
{
var weekStr = null;
if(date!=null)
{
weekStr = "W"
var dateYear = date.getFullYear() ;
var dateWeek = Ext.Date.getWeekOfYear(날짜);
var firstDayOfMonth = Ext.Date.getFirstDayOfMonth(date)
var day = date.getDate(); .getMonth() ;
//weekday 0-6
var weekday = date.getDay()
if(weekday===0)
{
dateWeek ;
// week>52 ==> 1년
if(month==11)
{
if(dateWeek>52)
{
dateYear = 1 ;
dateWeek -= 52;}else if(dateWeek<2){
dateYear = 1;
}
var yearStr = dateYear.toString(); >yearStr = yearStr .substring(2,4);
var dateWeekStr = dateWeek.toString()
if(dateWeekStr.length<2)
{
dateWeekStr = "0" dateWeekStr; 🎜>}
weekStr = yearStr;
weekStr = dateWeekStr
}
weekStr 반환