class_docstr: JMA HRIT format reader.
  
  By default, the reader uses the start time parsed from the filename. To use exact time, computed
  from the metadata, the user can define a keyword argument::
  
      scene = Scene(filenames=filenames,
                    reader='ahi_hrit',
                    reader_kwargs={'use_acquisition_time_as_start_time': True})
  
  As this time is different for every channel, time-dependent calculations like SZA correction
  can be pretty slow when multiple channels are used.
  
  The exact scanline times are always available as coordinates of an individual channels::
  
      scene.load(["B03"])
      print(scene["B03].coords["acq_time"].data)
  
  would print something similar to::
  
      array(['2021-12-08T06:00:20.131200000', '2021-12-08T06:00:20.191948000',
             '2021-12-08T06:00:20.252695000', ...,
             '2021-12-08T06:09:39.449390000', '2021-12-08T06:09:39.510295000',
             '2021-12-08T06:09:39.571200000'], dtype='datetime64[ns]')
  
  The first value represents the exact start time, and the last one the exact end time of the data
  acquisition.
docstr: Get the acquisition times from the file.
  
  Acquisition times for a subset of scanlines are stored in the header
  as follows:
  
  b'LINE:=1\rTIME:=54365.022558\rLINE:=21\rTIME:=54365.022664\r...'
  
  Missing timestamps in between are computed using linear interpolation.
docstr_tok: ["Get","the","acquisition","times","from","the","file",".","Acquisition","times","for","a","subset","of","scanlines","are","stored","in","the","header","as","follows",":","b'LINE",":","=1\\rTIME",":","=54365.022558\\rLINE",":","=21\\rTIME",":","=54365.022664\\r","...","'","Missing","timestamps","in","between","are","computed","using","linear","interpolation","."]
code: def _get_acq_time(self):
      r"""Get the acquisition times from the file.
  
      Acquisition times for a subset of scanlines are stored in the header
      as follows:
  
      b'LINE:=1\rTIME:=54365.022558\rLINE:=21\rTIME:=54365.022664\r...'
  
      Missing timestamps in between are computed using linear interpolation.
      """
      buf_b = np.frombuffer(
          self.mda["image_observation_time"],
          dtype=image_observation_time,
      )
  
      # Replace \r by \n before encoding, otherwise encoding will drop all
      # elements except the last one
      buf_s = b"".join(buf_b["times"]).replace(b"\r", b"\n").decode()
  
      # Split into key:=value pairs; then extract line number and timestamp
      splits = buf_s.strip().split("\n")
      lines_sparse = [int(s.split(":=")[1]) for s in splits[0::2]]
      times_sparse = [float(s.split(":=")[1]) for s in splits[1::2]]
  
      if self.platform == HIMAWARI8:
          # Only a couple of timestamps in the header, and only the first
          # and last are usable (duplicates inbetween).
          lines_sparse = [lines_sparse[0], lines_sparse[-1]]
          times_sparse = [times_sparse[0], times_sparse[-1]]
  
      # Compute missing timestamps using linear interpolation.
      lines = np.arange(lines_sparse[0], lines_sparse[-1] + 1)
      times = np.interp(lines, lines_sparse, times_sparse)
  
      # Convert to np.datetime64
      times64 = mjd2datetime64(times)
  
      return times64
  
imports: import logging
  from datetime import datetime
  import numpy
  import xarray
  from satpy.readers._geos_area import get_area_definition, get_area_extent
  from satpy.readers.hrit_base import HRITFileHandler, ancillary_text, annotation_header, base_hdr_map, image_data_function
  from satpy.readers.utils import get_geostationary_mask
label_desc: Use image node_id 9 for calling the HRITJMAFileHandler obj's underlying member method code with example usage: obj._get_acq_time() and returns: times64