Урок 14

Классы NumberFormat, DateFormat


1. Класс NumberFormat

Чтобы получить средства форматирования для национального стандарта по умолчанию, используются следующие методы:
NumberFormat.getlnstance() 
NumberFormat.getNumberlnstance() - идентичен getInstance()
NumberFormat.getCurrencylnstance() 
NumberFormat.getPercentlnstance()

Чтобы получить средства форматирования для других национальных стандартов используются следующие методы:
NumberFormat.getlnstance(Locale locale) 
NumberFormat.getNumberlnstance(Locale locale) - идентичен getInstance(Locale locale)
NumberFormat.getCurrencylnstance(Locale locale) 
NumberFormat.getPercentlnstance(Locale locale)

Пример 1. Использование класса NumberFormat

import java.text.NumberFormat;
import java.util.Locale;

public class NumberFormatDemo1 {
    public static void main(String[] args) {
        float f1 = 123.4567f;
        Locale locFR = new Locale("fr"); // France
        NumberFormat[] nfa = new NumberFormat[6];
        nfa[0] = NumberFormat.getInstance();
        nfa[1] = NumberFormat.getInstance(locFR);
        nfa[2] = NumberFormat.getCurrencyInstance();
        nfa[3] = NumberFormat.getCurrencyInstance(locFR);
        nfa[4] = NumberFormat.getPercentInstance();
        nfa[5] = NumberFormat.getPercentInstance(locFR);
        for (NumberFormat nf : nfa) {
            System.out.println(nf.format(f1));
        }
    }
}

Другие полезные методы NumberFormat класса:

setMaximumFractionDigits(int digits) - устанавливает максимальное количество цифр после десятичной точки в форматируемом объекте. Последняя отображаемая цифра округляется.

setMaximumlntegerDigits(int digits) - устанавливает максимальное количество цифр перед десятичной точкой в форматируемом объекте. Используйте этот метод с предельной осторожностью. Если вы зададите слишком мало цифр, число будет просто усечено, и результат станет совершенно неправильным!

setMinimumFractionDigits(int digits) - устанавливает минимальное количество цифр после десятичной точки в форматируемом объекте. Если количество цифр в дробной части числа меньше минимального, то на экран выводятся замыкающие нули.

setMinimumlntegerDigits(int digits) - устанавливает минимальное количество цифр перед десятичной точкой в форматируемом объекте. Если количество цифр в целой части числа меньше минимального, то на экран выводятся ведущие нули.

getMaximumFractionDigits()

getMinimumFractionDigits()

parse()

setParseIntegerOnly()

Пример 2. Использование класса NumberFormat

import java.text.NumberFormat;

public class NumberFormatDemo2 {
    public static void main(String[] args) {
        double d = 123.45678;
        NumberFormat nf = NumberFormat.getInstance();
        System.out.print("Максимальное количество знаков в дробной части "
                + nf.getMaximumFractionDigits() + ": ");
        System.out.println(nf.format(d) + " ");
        nf.setMaximumFractionDigits(7);
        System.out.print("Максимальное количество знаков в дробной части 7: ");
        System.out.println(nf.format(d) + " ");
        nf.setMaximumIntegerDigits(2);
        System.out.print("Максимальное количество знаков в целой части 2: ");
        System.out.println(nf.format(d) + " ");
    }
}

Пример 3. Использование класса NumberFormat

import java.text.NumberFormat;

public class NumberFormatDemo3 {
    public static void main(String[] args) {
        double d = 123.45678;
        NumberFormat nf = NumberFormat.getInstance();
        System.out.print("Минимальное количество знаков в дробной части "
                + nf.getMinimumFractionDigits() + ": ");
        System.out.println(nf.format(d) + " ");
        nf.setMinimumFractionDigits(7);
        System.out.print("Минимальное количество знаков в дробной части 7: ");
        System.out.println(nf.format(d) + " ");
        nf.setMinimumIntegerDigits(5);
        System.out.print("Минимальное количество знаков в целой части 5: ");
        System.out.println(nf.format(d) + " ");
    }
}

Пример 4. Использование класса NumberFormat

import java.text.NumberFormat;
import java.text.ParseException;

public class NumberFormatDemo4 {
    public static void main(String[] args) {
        NumberFormat nf = NumberFormat.getInstance();
        try {
            System.out.println(nf.parse("1234,567"));
            nf.setParseIntegerOnly(true);
            System.out.println(nf.parse("1234,567"));
        } catch (ParseException pe) {
            System.out.println("parse exc");
        }
    }
}

2. Класс DateFormat

Чтобы получить средства форматирования используются следующие методы:

  • DateFormat.getInstance();
  • DateFormat.getDateInstance();
  • DateFormat.getDateInstance(int style);
  • DateFormat.getDateInstance(int style, Locale locale);

Где style принимает одно из следующих значений:
DateFormat.SHORT,
DateFormat.MEDIUM - используется по умолчанию,
DateFormat.LONG,
DateFormat.FULL.

Пример 5. Использование класса DateFormat

import java.text.DateFormat;
import java.util.Date;

public class DateFormatDemo1 {
    public static void main(String[] args) {
        Date d1 = new Date(1000000000000L);
        DateFormat[] dfa = new DateFormat[6];
        dfa[0] = DateFormat.getInstance();
        dfa[1] = DateFormat.getDateInstance();
        dfa[2] = DateFormat.getDateInstance(DateFormat.SHORT);
        dfa[3] = DateFormat.getDateInstance(DateFormat.MEDIUM);
        dfa[4] = DateFormat.getDateInstance(DateFormat.LONG);
        dfa[5] = DateFormat.getDateInstance(DateFormat.FULL);
        for (DateFormat df : dfa) {
            System.out.println(df.format(d1));
        }
    }
}

Пример 6. Использование класса DateFormat

import java.text.DateFormat;
import java.util.Date;

public class DateFormatDemo2 {
    public static void main(String[] args) {
        Date date = new Date(1000000000000L);
        System.out.println("Заданная дата = " + date);

        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
        String s = df.format(date);

        System.out.println("Заданная дата в стиле SHORT = " + s);
    }
}

Пример 7. Форматирования даты для разных регионов

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class DateFormatDemo3 {
    public static void main(String[] args) {
        Date date = new Date();
        Locale[] locales = DateFormat.getAvailableLocales();
        for (Locale locale : locales) {
            DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale);
            System.out.println(locale + "---> " + df.format(date));
        }
    }
}

Пример 8. Использование метода DateFormat.parse()

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;

public class DateFormatDemo4 {
    public static void main(String[] args) {
        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
        try {
            Date date2 = df.parse("09.09.01");
            System.out.println("parsed = " + date2);
        } catch (ParseException pe) {
            System.out.println("parse exc");
        }
    }
}

3. Класс SimpleDataFormat

Для того, чтобы отображать дату и время в удобном для вас формате используется SimpleDataFormat.

Пример 9. Использование метода DateFormat.parse()

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo1 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);

        DateFormat format1 = new SimpleDateFormat("dd.MM.yyyy hh:mm");
        DateFormat format2 =
                new SimpleDateFormat("День dd Месяц MM Год yyyy Время hh:mm");
        System.out.println(format1.format(date)); //25.02.2013 09:03
        //День 25 Месяц 02 Год 2013 Время 09:03
        System.out.println(format2.format(date));
    }
}


0 comments
Leave your comment: