ssf icon indicating copy to clipboard operation
ssf copied to clipboard

Cannot parse Hungarian date format + fix

Open hawajrambo opened this issue 8 months ago • 0 comments

import ssfPkg from 'ssf'; const { format } = ssfPkg; let s= format("yyyy.mm.dd. hh:mm:ss", 45779.201898148145);

Throws an error, because it treats the "." date separator as decimal seperator

Here is a quickfix:

function eval_fmt(fmt, v, opts, flen) {
	var out = [], o = "", i = 0, c = "", lst='t', dt, j, cc;
	var hr='H';
  var dateDetected= false;      <<<<<<<<<<<<<<<<<<<<<
	/* Tokenize */
	while(i < fmt.length) {
		c = fmt.charAt(i);      <<<<<<<<<<<<<<<<<<<<<
		var cFixed= c;      <<<<<<<<<<<<<<<<<<<<<
		if ( ( c === "." ) && dateDetected ) cFixed="-"; // change date seaparator to -, to not treat as decimal separator      <<<<<<<<<<<<<<<<<<<<<
		switch((cFixed)) {      <<<<<<<<<<<<<<<<<<<<<
			case 'G': /* General */
				if(!isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);
			case 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':
				dateDetected= true; // from now on treat . as date delimiter insted of decimal separator      <<<<<<<<<<<<<<<<<<<<<
				if(v < 0) return "";

hawajrambo avatar May 02 '25 05:05 hawajrambo