pom.xml 文件:
?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>base</artifactId> <groupId>com.bigdata</groupId> <version>1.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>base-tools</artifactId> <dependencies> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>org.eclipse.swt</groupId> <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId> <version>4.3</version> </dependency> <dependency> <artifactId>log4j</artifactId> <groupId>log4j</groupId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> <groupId>log4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.eclipse.swt</groupId> <artifactId>swing2swt</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.hikvision.cods.ui.DateFormatMainUI</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
类:
import com.hikvision.cods.util.FontUtils; import java.awt.Dimension; import java.awt.Toolkit; import java.util.Date; import java.util.Properties; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.apache.log4j.PropertyConfigurator; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.events.ShellAdapter; import org.eclipse.swt.events.ShellEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import swing2swt.layout.BorderLayout; public class DateFormatMainUI { protected static final Logger logger = LoggerFactory.getLogger(DateFormatMainUI.class); private static volatile boolean running = true; public static final Display display = Display.getDefault(); public static final Shell shell = new Shell(192); public static void main(String[] args) { Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { DateFormatMainUI.logger.info("PerfMainUI closed!"); synchronized (DateFormatMainUI.class) { DateFormatMainUI.running = false; DateFormatMainUI.class.notifyAll(); } } }); DateFormatMainUI window = new DateFormatMainUI(); window.configLog4j(); window.open(); synchronized (DateFormatMainUI.class) { while (running) { try { DateFormatMainUI.class.wait(); } catch (Throwable localThrowable) {} } } } protected void open() { shell.setSize(500, 130); shell.setText("日期格式转换工具"); shell.setLayout(new BorderLayout(0, 0)); Composite subComposite = new Composite(shell, 0); subComposite.setLayout(new BorderLayout(5, 5)); loadMainPanel(subComposite); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int width = Math.min(shell.getSize().x, screenSize.width); int height = Math.min(shell.getSize().y, screenSize.height); int locX = (screenSize.width - width) / 2; int locY = (screenSize.height - height) / 2; shell.setLocation(locX, locY); shell.open(); shell.layout(); shell.addShellListener(new ShellAdapter() { public void shellClosed(ShellEvent e) { MessageBox messagebox = new MessageBox(DateFormatMainUI.shell, 196); messagebox.setText("确认"); messagebox.setMessage("您确定要退出吗?"); int message = messagebox.open(); if (((e.doit = message == 64) ? 1 : 0) != 0) { DateFormatMainUI.logger.info("++++++++++++++++++++++++++++++++"); System.exit(0); } } }); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } protected void loadMainPanel(Composite parent) { Composite mainCenter = new Composite(parent, 0); mainCenter.setLayoutData("Center"); GridLayout gl_mainCenter = new GridLayout(1, false); gl_mainCenter.marginWidth = 0; gl_mainCenter.marginHeight = 0; gl_mainCenter.horizontalSpacing = 0; gl_mainCenter.verticalSpacing = 0; mainCenter.setLayout(gl_mainCenter); Group detailGroup = new Group(mainCenter, 0); detailGroup.setLayoutData(new GridData(4, 4, true, true, 1, 1)); detailGroup.setLayout(new GridLayout(5, false)); generateTextLabel(detailGroup, "日期字符: "); final Text textDateStr = generateText(detailGroup, "", "dateStr"); generateSpliterLabel(detailGroup); generateTextLabel(detailGroup, "日期数值: "); final Text textDateNum = generateText(detailGroup, "", "dateNum"); generateSpliterLabel(detailGroup); textDateStr.addFocusListener(new FocusListener() { public void focusLost(FocusEvent arg0) { textDateStr.clearSelection(); Date date = DateFormatUtils.toDate(textDateStr.getText(), "yyyy-MM-dd HH:mm:ss.SSS"); textDateNum.setText(String.valueOf(date == null ? 0L : date.getTime())); } public void focusGained(FocusEvent arg0) { System.out.println("dateStr focusGained.............................."); textDateStr.selectAll(); } }); textDateStr.addMouseListener(new MouseListener() { public void mouseUp(MouseEvent arg0) {} public void mouseDown(MouseEvent arg0) {} public void mouseDoubleClick(MouseEvent arg0) { textDateStr.selectAll(); } }); textDateNum.addFocusListener(new FocusListener() { public void focusLost(FocusEvent arg0) { textDateNum.clearSelection(); textDateStr.setText(DateFormatUtils.format(NumberUtils.toLong(textDateNum.getText()), "yyyy-MM-dd HH:mm:ss.SSS")); } public void focusGained(FocusEvent arg0) { System.out.println("dateNum focusGained.............................."); textDateNum.selectAll(); } }); textDateNum.addMouseListener(new MouseListener() { public void mouseUp(MouseEvent arg0) {} public void mouseDown(MouseEvent arg0) {} public void mouseDoubleClick(MouseEvent arg0) { textDateNum.selectAll(); } }); } private void convert(Text textDateStr, Text textDateLong) { String dateStr = textDateStr.getText(); String dateNum = textDateLong.getText(); if (StringUtils.isEmpty(dateStr)) { if (StringUtils.isEmpty(dateNum)) { long timeInMillis = System.currentTimeMillis(); textDateStr.setText(DateFormatUtils.format(timeInMillis, "yyyy-MM-dd HH:mm:ss.SSS")); textDateLong.setText(String.valueOf(timeInMillis)); } else { long timeInMillis = NumberUtils.toLong(dateNum); textDateStr.setText(DateFormatUtils.format(timeInMillis, "yyyy-MM-dd HH:mm:ss.SSS")); } } else if (StringUtils.isEmpty(dateNum)) { Date date = DateFormatUtils.toDate(dateStr, "yyyy-MM-dd HH:mm:ss.SSS"); textDateLong.setText(String.valueOf(date == null ? 0L : date.getTime())); } } private void generateSpliterLabel(Group parentGroup) { Label label = new Label(parentGroup, 16777224); label.setLayoutData(new GridData(131072, 16777216, true, false, 1, 1)); } private void generateTextLabel(Group parentGroup, String labelText) { Label label = new Label(parentGroup, 16777224); label.setLayoutData(new GridData(131072, 16777216, true, false, 1, 1)); label.setText(labelText); label.setFont(FontUtils.getConsolas()); } private Text generateText(Group parentGroup, String defaultText, String name) { Text text = new Text(parentGroup, 2048); GridData gridData = new GridData(4, 16777216, true, false, 3, 1); gridData.widthHint = 280; gridData.heightHint= 20; text.setLayoutData(gridData); text.setData("name", name); text.setText(defaultText); text.setTextLimit(50); text.setFont(FontUtils.getConsolas()); return text; } protected void configLog4j() { String level = "DEBUG"; Properties properties = new Properties(); properties.setProperty("log4j.rootLogger", level + ", application"); properties.setProperty("log4j.rootLogger.encoding", "UTF-8"); properties.setProperty("log4j.logger.org.apache", "INFO"); properties.setProperty("log4j.logger.org.springframework", "INFO"); properties.setProperty("log4j.appender.application", "org.apache.log4j.DailyRollingFileAppender"); properties.setProperty("log4j.appender.application.File", "DateFormatMainUI.log"); properties.setProperty("log4j.appender.application.Append", "true"); properties.setProperty("log4j.appender.application.DatePattern", "‘.‘yyyy-MM-dd"); properties.setProperty("log4j.appender.application.layout", "org.apache.log4j.PatternLayout"); properties.setProperty("log4j.appender.application.layout.ConversionPattern", "%d [%t] %-5p %C{6} (%F:%L) - %m%n"); PropertyConfigurator.configure(properties); } }
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.commons.lang.time.FastDateFormat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DateFormatUtils { protected static final Logger LOGGER = LoggerFactory.getLogger(DateFormatUtils.class); public static final String DATE_TIME_FORMATTER_DEFAULT = "yyyy-MM-dd‘T‘HH:mm:ss‘Z‘"; public static final String DATE_TIME_FORMATTER_STANDARD = "yyyy-MM-dd HH:mm:ss"; public static final String DATE_TIME_FORMATTER_STANDARD_TZ = "yyyy-MM-dd‘T‘HH:mm:ss‘Z‘"; public static final String DATE_TIME_FORMATTER_LONG = "yyyy-MM-dd HH:mm:ss.SSS"; public static final String DATE_TIME_FORMATTER_LONG_TZ = "yyyy-MM-dd‘T‘HH:mm:ss.SSS‘Z‘"; public static final String DATE_TIME_FORMATTER_NET = "yyyy-MM-dd HH:mm:ss.SSS"; public static final long TIMEMILLIS_FOR_ONE_DAY = 86400000L; public static String format(long date) { FastDateFormat df = FastDateFormat.getInstance("yyyy-MM-dd‘T‘HH:mm:ss‘Z‘"); return df.format(date); } public static String format(long date, String format) { FastDateFormat df = FastDateFormat.getInstance(format); return df.format(date); } public static String format(Date date) { FastDateFormat df = FastDateFormat.getInstance("yyyy-MM-dd‘T‘HH:mm:ss‘Z‘"); return df.format(date); } public static String format(Date date, String format) { FastDateFormat df = FastDateFormat.getInstance(format); return df.format(date); } public static String format(String dateStr, String srcFormat, String dstFormat) { Date date = toDate(dateStr, srcFormat); FastDateFormat df = FastDateFormat.getInstance(dstFormat); return df.format(date); } public static Date toDate(String dateStr, String pattern) { try { SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); return dateFormat.parse(dateStr); } catch (ParseException e) {} return null; } public static String format___(Date date) { FastDateFormat df = FastDateFormat.getInstance("yyyyMMddhh"); return df.format(date); } public static long getMonthFirstDay(long timeInMillis) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(timeInMillis); calendar.set(5, calendar.getActualMinimum(5)); calendar.set(11, calendar.getActualMinimum(11)); calendar.set(12, calendar.getActualMinimum(12)); calendar.set(13, calendar.getActualMinimum(13)); calendar.set(14, calendar.getActualMinimum(14)); return calendar.getTime().getTime(); } public static long getMonthLastDay(long timeInMillis) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(timeInMillis); calendar.set(5, calendar.getActualMaximum(5)); calendar.set(11, calendar.getActualMaximum(11)); calendar.set(12, calendar.getActualMaximum(12)); calendar.set(13, calendar.getActualMaximum(13)); calendar.set(14, calendar.getActualMaximum(14)); return calendar.getTime().getTime(); } public static long getDateBeginTime(long timeInMillis) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(timeInMillis); calendar.set(11, calendar.getActualMinimum(11)); calendar.set(12, calendar.getActualMinimum(12)); calendar.set(13, calendar.getActualMinimum(13)); calendar.set(14, calendar.getActualMinimum(14)); return calendar.getTime().getTime(); } public static long getDateEndTime(long timeInMillis) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(timeInMillis); calendar.set(11, calendar.getActualMaximum(11)); calendar.set(12, calendar.getActualMaximum(12)); calendar.set(13, calendar.getActualMaximum(13)); calendar.set(14, calendar.getActualMaximum(14)); return calendar.getTime().getTime(); } public static String getNextDay(String dateStr, String format) { Date date = toDate(dateStr, format); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(5, calendar.get(5) + 1); return format(calendar.getTime(), format); } public static String getLatestSunday(String dateStr, String format) { Date date = toDate(dateStr, format); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return format(date.getTime() + (8 - calendar.get(7)) * 86400000L, format); } public static String getLatestMonthEnd(String dateStr, String format) { Date date = toDate(dateStr, format); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(2, calendar.get(2) + 1); calendar.set(5, calendar.getActualMinimum(5)); return format(calendar.getTime(), format); } public static void main(String[] args) { System.out.println(getNextDay("150205", "yyMMdd")); System.out.println(getLatestSunday("150205", "yyMMdd")); System.out.println(getLatestMonthEnd("150205", "yyMMdd")); System.out.println(getNextDay("150208", "yyMMdd")); System.out.println(getLatestSunday("150209", "yyMMdd")); System.out.println(getLatestMonthEnd("150209", "yyMMdd")); } }
import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Display; public class FontUtils { static final int FONT_HIGHT_DEFAULT = 12; static final int FONT_HIGHT_BANNER = 30; static Font bannerFont = new Font(Display.getCurrent(), "黑体", 30, 1); static Font consolas = new Font(Display.getCurrent(), "Consolas", 12, 0); public static Font getBanner() { return bannerFont; } public static Font getConsolas() { return consolas; } }