Я генерирую число с даты, я использую Integer.parseInt (myDateNumberString).
Моя проблема в том, что если число будет слишком большим, я выдаст ошибку.
public Integer currentDate(){
String current_date = new SimpleDateFormat("yyyyMMddHHmm").format(Calendar.getInstance().getTime());
//int _current_date = Integer.parseInt(current_date); // Error, too big number
int _current_date = new BigInteger(current_date).intValue();
return _current_date; // Error, output: -51212897
}
Я хочу получить ценность как 201812250203
Если мой формат даты без mm, это нормально, но мне нужно его объявить.
Вы можете использовать длинный?
@KevinO тот же результат с Long
getTime возвращает long. Я не уверен, что вы пытаетесь сделать с intValue, но результат getTime почти наверняка то, что вам нужно, если вы хотите числовое представление даты.
Почему бы не использовать реальный объект, предназначенный для хранения даты, а не просто числового значения?
Почему бы просто не сделать public long currentDate() { return Calendar.getInstance().getTimeInMillis(); }. Зачем вы вообще конвертируете этот формат в int? Почему бы просто не сохранить его как строку?
Возможно, вы сможете сообщить нам о проблеме действительный, которую пытаетесь решить, а не о своей неудачной попытке ее решить. Тот факт, что дата не помещается в int, является проблемой, которую вы пытаетесь решить.
@All, мне нужен тип значения Integer для интеграции моих данных.
Недостаточно информации о вашей проблеме. Вы можете показать нам еще код?
@AjieKurniyawan, но Зачем вам нужно целое число для хранения отформатированной отметки времени? Можете ли вы изменить функцию, в которую вы пытаетесь передать это целочисленное значение?
почему вы не разрезаете на несколько частей после преобразования часть за частью
К вашему сведению, ужасно неприятные старые классы даты и времени, такие как java.util.Date, java.util.Calendar и java.text.SimpleDateFormat, теперь являются наследие, вытесненными классами java.time, встроенными в Java 8 и новее. См. Руководство от Oracle.
201812250203 не может поместиться в Integer, поэтому вы просите невозможное. При этом я согласен с другими, что вы должны использовать правильный объект даты и времени, а не Integer, например LocalDateTime, ZonedDateTime или Instant. Я тоже рекомендую вам избегать класса SimpleDateFormat. Это не только давно устарело, но и доставит много хлопот. Сегодня у нас намного лучше в java.time, современный API даты и времени Java.




Вы можете использовать BigInteger number = new BigInteger(string);, который анализирует данную строку как BigInteger.
документы говорят:
Constructs a new BigInteger by parsing value. The string representation consists of an optional plus or minus sign followed by a non-empty sequence of decimal digits. Digits are interpreted as if by Character.digit(char,10).
BigInteger - отвлекающий маневр.
Основываясь на комментариях, которые предполагают, что подход OP неверен, да. Однако OP специально спросил, как разобрать String на BigInteger, и этот ответ предоставляет эту информацию. Если бы OP спросил: «Как лучше обрабатывать временные метки», этот ответ был бы неуместным.
Измените тип возвращаемого значения метода на long, а также возвращаемую переменную:
Обновлено: избавьтесь от метода .intValue () и измените возвращаемый тип метода на BigInteger, а также переменную.
public static void main(String[] args) {
System.out.println(currentDate());
}
public static BigInteger currentDate() {
String current_date = new SimpleDateFormat("yyyyMMddHHmm").format(Calendar.getInstance().getTime());
// int _current_date = Integer.parseInt(current_date);
BigInteger _current_date = new BigInteger(current_date);
return _current_date;
}
К вашему сведению, ужасно неприятные старые классы даты и времени, такие как java.util.Date, java.util.Calendar и java.text.SimpleDateFormat, теперь являются наследие, вытесненными классами java.time, встроенными в Java 8 и новее. См. Руководство от Oracle.
Используйте другой тип данных, чем int. Прямо сейчас вы создаете объект
BigInteger, а затем сразу конвертируете его в int, что представляет собой много фейерверков, чтобы просто разобратьcurrent_dateна int.