Install the library using npm:
npm install @pbkware/dot-net-date-number-formatting
The library provides three main components for formatting and parsing:
Format dates using .NET-compatible format strings:
import { DotNetDateTimeFormatter, DotNetLocaleSettings } from '@pbkware/dot-net-date-number-formatting';
const formatter = new DotNetDateTimeFormatter();
formatter.localeSettings = DotNetLocaleSettings.createInvariant();
// Standard format strings
formatter.trySetFormat('d'); // Short date
console.log(formatter.toString(new Date(2024, 6, 5))); // "7/5/2024"
formatter.trySetFormat('F'); // Full date/time
console.log(formatter.toString(new Date(2024, 6, 5, 14, 30, 0)));
// "Friday, July 5, 2024 2:30:00 PM"
// Custom format strings
formatter.trySetFormat('yyyy-MM-dd');
console.log(formatter.toString(new Date(2024, 6, 5))); // "2024-07-05"
formatter.trySetFormat('yyyy-MM-dd HH:mm:ss');
console.log(formatter.toString(new Date(2024, 6, 5, 14, 30, 0))); // "2024-07-05 14:30:00"
Format numbers using .NET-compatible format strings:
import { DotNetFloatFormatter, DotNetLocaleSettings } from '@pbkware/dot-net-date-number-formatting';
const formatter = new DotNetFloatFormatter();
formatter.localeSettings = DotNetLocaleSettings.createInvariant();
// Standard format strings
formatter.trySetFormat('C'); // Currency
console.log(formatter.toString(1234.56)); // "$1,234.56"
formatter.trySetFormat('N2'); // Number with 2 decimals
console.log(formatter.toString(1234567.89)); // "1,234,567.89"
formatter.trySetFormat('P1'); // Percentage with 1 decimal
console.log(formatter.toString(0.1234)); // "12.3%"
Parse numbers with specific style requirements:
import { DotNetFloatFormatter, DotNetNumberStyles, DotNetLocaleSettings } from '@pbkware/dot-net-date-number-formatting';
const formatter = new DotNetFloatFormatter();
formatter.localeSettings = DotNetLocaleSettings.createInvariant();
// Use predefined styles
formatter.styles = DotNetNumberStyles.number;
const result = formatter.tryFromString('1,234.56');
if (result.isOk()) {
console.log(result.value); // 1234.56
}
Parse dates with specific format requirements:
import { DotNetDateTimeFormatter, DotNetDateTimeStyles, DotNetLocaleSettings } from '@pbkware/dot-net-date-number-formatting';
const formatter = new DotNetDateTimeFormatter();
formatter.localeSettings = DotNetLocaleSettings.createInvariant();
formatter.styles = DotNetDateTimeStyles.allowWhiteSpaces;
formatter.trySetFormat('yyyy-MM-dd');
const result = formatter.tryFromString('2024-07-05');
if (result.isOk()) {
console.log(result.value); // Fri Jul 05 2024 00:00:00
}
All operations that can fail return a Result<T,E>` type. Always check if the operation succeeded:
const formatResult = formatter.trySetFormat('C2');
if (formatResult.isErr()) {
console.error('Invalid format:', formatResult.error);
return;
}
const parseResult = formatter.tryFromString('invalid');
if (parseResult.isErr()) {
console.error('Parse failed:', parseResult.error);
} else {
console.log('Parsed value:', parseResult.value);
}