DevExtreme v23.2 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

Formatting

Use our DateRangeBox displayFormat property to change date display format as requirements dictate. This demo illustrates the following:

  • Locale-dependent format
    DateRangeBox formats date range values based upon the specified locale. You do not need to define a format with the displayFormat property. For more information, refer to the following help topic: Localize Dates, Numbers, and Currencies.

  • Built-in predefined formats
    DevExtreme allows you to apply various predefined formats. You can specify simple strings or shortcuts that define widely used date formats instead of complex expressions. This demo illustrates how to display dates using the "shortdate" format.

  • Locale Data Markup Language (LDML) pattern To define a custom date format string, use the LDML pattern. In this demo, the displayFormat property is set to "EEEE, d of MMM, yyyy". This expression displays week day, day number, month and year. The input field displays the formatted value. For additional information on supported format characters, refer to the following help topic: Custom Format String.

  • Add literal characters
    You can specify the displayFormat property as a string with literal and Locale Data Markup Language characters. You should wrap characters that are not part of the LDML pattern within quotation marks - otherwise, they may be interpreted as wildcards. In this demo, if you specify the word "Year" without quotation marks, the letter "a" is interpreted as an "AM/PM" placeholder.

To ensure that input values match displayFormat, you can apply an input mask to our DateRangeBox (set the control’s useMaskBehavior property to true).

For additional formatting-related information, please refer to the following help topic: Value Formatting.

Backend API
<template> <div> <div class="dx-fieldset"> <div class="dx-field"> <div class="dx-field-label">Locale-dependent format</div> <div class="dx-field-value"> <DxDateRangeBox start-date-placeholder="12/31/2018" end-date-placeholder="12/31/2018" :show-clear-button="true" :use-mask-behavior="true" :open-on-field-click="false" /> </div> </div> <div class="dx-field"> <div class="dx-field-label">Built-in predefined format</div> <div class="dx-field-value"> <DxDateRangeBox display-format="shortdate" :start-date="startDate" :end-date="endDate" :show-clear-button="true" :use-mask-behavior="true" :open-on-field-click="false" /> </div> </div> <div class="dx-field"> <div class="dx-field-label">Locale Data Markup Language (LDML) pattern</div> <div class="dx-field-value"> <DxDateRangeBox display-format="EEEE, d of MMM, yyyy" :start-date="startDate" :end-date="endDate" :show-clear-button="true" :use-mask-behavior="true" :open-on-field-click="false" /> </div> </div> <div class="dx-field"> <div class="dx-field-label">Format with literal characters</div> <div class="dx-field-value"> <DxDateRangeBox display-format="'Year': yyyy, 'Month': MMM, 'Day': d" :start-date="startDate" :end-date="endDate" :show-clear-button="true" :use-mask-behavior="true" :open-on-field-click="false" /> </div> </div> </div> </div> </template> <script setup lang="ts"> import DxDateRangeBox from 'devextreme-vue/date-range-box'; const msInDay = 1000 * 60 * 60 * 24; const now = new Date(); const startDate = new Date(now.getTime() - msInDay * 3); const endDate = new Date(now.getTime() + msInDay * 3); </script> <style> .demo-container { height: 610px; } .dx-fieldset { min-height: 500px; } .dx-field { padding: 8px; } </style>
window.exports = window.exports || {}; window.config = { transpiler: 'plugin-babel', meta: { '*.vue': { loader: 'vue-loader', }, '*.ts': { loader: 'demo-ts-loader', }, '*.svg': { loader: 'svg-loader', }, 'devextreme/time_zone_utils.js': { 'esModule': true, }, 'devextreme/localization.js': { 'esModule': true, }, 'devextreme/viz/palette.js': { 'esModule': true, }, }, paths: { 'root:': '../../../../../', 'npm:': 'https://unpkg.com/', }, map: { 'vue': 'npm:vue@3.3.4/dist/vue.esm-browser.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@1.1.1/index.js', 'demo-ts-loader': 'root:utils/demo-ts-loader.js', 'svg-loader': 'root:utils/svg-loader.js', 'mitt': 'npm:mitt/dist/mitt.umd.js', 'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.28.1/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@23.2.5/cjs', 'devextreme-vue': 'npm:devextreme-vue@23.2.5/cjs', 'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@1.6.4/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.2.5/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@4.1.51/dist/dx-gantt.js', '@devextreme/runtime': 'npm:@devextreme/runtime@3.0.12', 'inferno': 'npm:inferno@7.4.11/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@7.4.11/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate@7.4.11/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js', 'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js', // Prettier 'prettier/standalone': 'npm:prettier@2.8.4/standalone.js', 'prettier/parser-html': 'npm:prettier@2.8.4/parser-html.js', }, packages: { 'devextreme-vue': { main: 'index.js', }, 'devextreme': { defaultExtension: 'js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:@devextreme/runtime@3.0.12/inferno/package.json', ], babelOptions: { sourceMaps: false, stage0: true, }, }; System.config(window.config);
import { createApp } from 'vue'; import App from './App.vue'; createApp(App).mount('#app');
<!DOCTYPE html> <html> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/23.2.5/css/dx.light.css" /> <script type="module"> import * as vueCompilerSFC from "https://unpkg.com/@vue/compiler-sfc@3.3.4/dist/compiler-sfc.esm-browser.js"; window.vueCompilerSFC = vueCompilerSFC; </script> <script src="https://unpkg.com/typescript@4.2.4/lib/typescript.js"></script> <script src="https://unpkg.com/core-js@2.6.12/client/shim.min.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import("./index.ts"); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"> </div> </div> </body> </html>