getDisplayName method

String getDisplayName(
  1. ILibDate date, [
  2. String style = ''
])

A human-readable name for this zone at date.

style selects the form: 'rfc822' for a numeric offset (e.g. '-0400'), 'long' for the full name (e.g. 'Eastern Standard Time'), or the default abbreviation (e.g. 'EST').

Implementation

String getDisplayName(ILibDate date, [String style = '']) {
  if (_zone == null) {
    return _formatRfc822(_offset);
  }

  switch (style) {
    case 'rfc822':
      final double totalOffset =
          _offset + (inDaylightTime(date) ? _dstSavings : 0);
      return _formatRfc822(totalOffset);
    case 'long':
      final String? n = _zone!['n'] as String?;
      if (n != null) {
        if (n.contains('{c}')) {
          final String str = inDaylightTime(date) ? 'Daylight' : 'Standard';
          return n.replaceAll('{c}', str);
        }
        return n;
      }
      return _formatGmtOffset(date);
    default:
      final String? f = _zone!['f'] as String?;
      if (f != null && f != 'zzz') {
        if (f.contains('{c}')) {
          String letter;
          if (inDaylightTime(date)) {
            final Map<String, dynamic>? s =
                _zone!['s'] as Map<String, dynamic>?;
            letter = (s?['c'] as String?) ?? '';
          } else {
            final Map<String, dynamic>? e =
                _zone!['e'] as Map<String, dynamic>?;
            letter = (e?['c'] as String?) ?? '';
          }
          return f.replaceAll('{c}', letter);
        }
        return f;
      }
      return _formatGmtOffset(date);
  }
}