Updates the date/time components
function _updateComponents() {
        this.scrollWheels = [];
        this._scrollingCount = 0;
        var dataSource = [];
        var sizeRatios = [];
        for (var i = 0; i < this._components.length; i++) {
            var component = this._components[i];
            component.createRenderable = _createRenderable.bind(this);
            var viewSequence = new VirtualViewSequence({
                factory: component,
                value: component.create(new Date(this._date.getTime()))
            });
            var options = LayoutUtility.combineOptions(
                this.options.scrollController, {
                    layout: WheelLayout,
                    layoutOptions: this.options.wheelLayout,
                    flow: false,
                    direction: Utility.Direction.Y,
                    dataSource: viewSequence,
                    autoPipeEvents: true
                }
            );
            var scrollController = new ScrollController(options);
            scrollController.on('scrollstart', _scrollWheelScrollStart.bind(this));
            scrollController.on('scrollend', _scrollWheelScrollEnd.bind(this));
            scrollController.on('pagechange', _scrollWheelPageChange.bind(this));
            var scrollWheel = {
                component: component,
                scrollController: scrollController,
                viewSequence: viewSequence
            };
            this.scrollWheels.push(scrollWheel);
            component.on('click', _clickItem.bind(this, scrollWheel));
            dataSource.push(scrollController);
            sizeRatios.push(component.sizeRatio);
        }

        this.layout.setDataSource(dataSource);
        this.layout.setLayoutOptions({
            ratios: sizeRatios
        });
    }