1. C# / Говнокод #13075

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public static bool isLaterThan()
    {
      string hd = DateTime.Now.ToString("tt", new CultureInfo("en-US")).ToLower();
    
      if (hd == "pm")
       return false;
    
       return DateTime.Now.Hour < 1;
    }

    уже есть час ночи?

    Запостил: taburetka, 30 Мая 2013

    Комментарии (21) RSS

    • > уже есть час ночи?
      > "en-US"
      в США
      Ответить
      • Дык разве культура влияет на таймзону? en-US поставили чтобы потрахаться с am/pm, не более того.
        Ответить
        • а почему не влияет? по идее, должна
          Ответить
          • Не влияет. А может, я американец, живущий в Урюпинске.
            Ответить
            • тогда надо ставить "en-RU", не?
              Ответить
              • Локаль учитывает, на каком языке ты предпочитаешь общаться и в каком фортмате тебе привычно видеть числа и и даты, а не где ты сейчас находишься.
                Ответить
                • если формат "язык-страна-подгруппа", то это подпадает под определение "где ты находишься"
                  Ответить
                  • Страна относится к языку, а не к физическому положению.
                    Ответить
                  • таймзона это ортогональная локали настройка
                    назови, например, правильную таймзону для ru-RU?
                    Ответить
              • Это Runglish?
                Ответить
    • >>isLaterThan()
      Кто-то раньше программировал на яве.

      Да и почему бы не написать так:

      public static bool isLaterThan()
              {
                  return DateTime.Now.Hour <= 1;
              }


      На мсдне пишут, что часы рассчитываются в диапазоне [0...23].
      Ответить
      • Точнее вот так.
        public static bool isLaterThan()
                {
                    return DateTime.Now.Hour >= 1 && DateTime.Now.Hour <= 11;
                }
        Ответить
        • а еще точнее
          public static bool isLaterThan()
                  {
                      return DateTime.Now.Hour < 12;
                  }

          Hour неотрицателен, а 0 тоже считается...
          Ответить
          • Верняк, но по условию задачи нужно считать не от нуля а от еденички, так что у вас не правильно. ;)
            Т.е. нужно проверить есть ли уже час ночи. Если 0, то его еще нет.
            Ответить
            • Ващето я вижу что в оригинале меньше, а не больше

              return DateTime.Now.Hour < 1;
              так что метод вообще из этой одной строчки должен состоять :)
              Ответить
              • В оригинале до этого происходит поиск строки "pm"(post meridiem).
                И если мы уверены, что все таки имеем дело c "am"(ante meridiem), мы проверяем больше оно еденички, а знак меньше, что бы не исключать 1.
                Ответить
                • Не больше, а меньше :(
                  Ответить
                  • Буквально код воспринимать никогда не стоит ;)
                    Ответить
                  • Хотя, я вот сейчас пересмотрел код и думаю, может ему нужно вообще не утро, а промежуток от 00:00 до 01:00.
                    Но тогда мой первый вариант был правильный. Не совсем, но все же. :)
                    Ответить

    Добавить комментарий