目前日期文章:201102 (6)

瀏覽方式: 標題列表 簡短摘要

參考網址

  1. 理解ThreadLocal
  2. ThreadLocal与synchronized
  3. ThreadLocal的设计与使用(原理篇)
  4. 利于ThreadLocal模式管理Session
  5. ThreadLocal 导致数据丢失的解决办法
  6. ThreadLocal
  7. -------------------------------------
  8. Design Pattern: Thread-Specific Storage 模式
  9. Improve SimpleDateFormat performance

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

類別

  1. java.util.Date
  2. java.sql.Date
  3. java.sql.Time
  4. java.sql.Timestamp
  5. -------------------------------------
  6. java.util.Calendar
  7. java.util.GregorianCalendar
  8. java.util.TimeZone
  9. java.util.SimpleTimeZone
  10. -------------------------------------
  11. java.text.DateFormat
  12. java.text.SimpleDateFormat
  13. java.text.DateFormatSymbols

應用

  1. java.util.Date 與 java.sql.Date 互轉

    java.sql.Date 就是一個裝了毫秒值的精簡型外覆器,它允許 JDBC 將毫秒值標識為 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以來經過的毫秒數。而 java.util.Date 的 getTime() 及 setTime(long time) 就是在處理毫秒值的函數。

    // java.util.Date --> java.sql.Date
    java.util.Date now = new java.util.Date();
    java.sql.Date sqlDate = new java.sql.Date(now.getTime());
    
    // java.sql.Date --> java.util.Date
    java.util.Date utilDate = new java.util.Date();
    utilDate.setTime(sqlDate.getTime());
    
  2. java.util.Date 與 java.util.Calendar 互轉

    Date 要跟 Calendar 互轉,主要都要透過 Calendar 的 getTime 及 setTime 函數。

台南小新 發表在 痞客邦 PIXNET 留言(1) 人氣()

The way to store dates in SQLite is: yyyy-mm-dd hh:mm:ss.sss

  • insert into myTable (name,mydate) Values ('fred','2009-01-02 13:22:15')
  • insert (update_time) values (datetime(CURRENT_TIMESTAMP,'localtime'))
  • CURRENT_TIME – Inserts only time
  • CURRENT_DATE – Inserts only date
  • CURRENT_TIMESTAMP – Inserts both time and date

SQLite 支援下列五種時間日期函數。日期時間的範圍為 0000-01-01 00:00:00 至 9999-12-31 23:59:59 (julidan day numbers 1721059.5 ~ 5373484.5)。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

今天在為了把 JDialog 置中在 JFrame 裏,查到可以用 setLocationRelativeTo 函數置中,但是要如何取得 JFrame 的實體呢?雖然可以在外面建立 JDialog 時,順便呼叫 setLocationRelativeTo 來置中,但是總希望在 JDialog 內自己呼叫置中即可。所以去查了一下,JDialog(Frame owner) 把 owner 設定給誰了。

public JDialog(Frame owner, String title, boolean modal) {
    super(owner == null? SwingUtilities.getSharedOwnerFrame() : owner, title, modal);
......
}
↓
public Dialog(Window owner, String title, ModalityType modalityType) {
    super(owner);
......
}
↓
public Window(Window owner) {
    this(owner == null ? (GraphicsConfiguration)null : owner.getGraphicsConfiguration());
    ownedInit(owner);
}
private void ownedInit(Window owner) {
    this.parent = owner;
    if (owner != null) {
        owner.addOwnedWindow(weakThis); 
    }
}

經由上述的 trace code 發現,owner 最後會被指定到 parent 裏,所以只要呼叫 getParent() 即可取得 owner 了。但是如果是透過 JDialog() 取得實體,則 owner 會被指定成 null。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

JFrame 置中有二種方法:
  1. 方法一
    setSize(800, 600);
    setLocationRelativeTo(null);
    
  2. 方法二
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    setSize(800, 600);
    setLocation((d.width-getWidth())/2, (d.height-getHeight())/2);
    
JDialog 置中有二種狀況:
  1. 狀況一:從外面設定
    JDialog dialog = new JDialog();
    dialog.setSize(300, 200);
    dialog.setLocationRelativeTo(frame);
    
  2. 方法二:從裏面設定
    new DialogTest(SwingUtilities.getWindowAncestor(c)).setVisible(true);
    public class DialogTest extends JDialog {
        public DialogTest() {
            this(null);
        }
        public DialogTest(Window owner) {
            super(owner);
            this.setSize(300, 200);
            this.setLocationRelativeTo(this.getParent());
        }
    }
    
JOptionPane 置中只有一種方法,也就是設定 parentComponent 即可,以下是 trace code 的結果。可以發現最終要呼叫 setLocationRelativeTo 函數來設定位置,所以一定要設定 parentComponent,否則永遠都是置中在營幕中間。
public static int showOptionDialog(Component parentComponent,
        Object message, String title, int optionType, int messageType,
        Icon icon, Object[] options, Object initialValue) 
        throws HeadlessException {
......
JDialog dialog = pane.createDialog(parentComponent, title, style);
......
}
↓↓↓↓↓↓
private JDialog createDialog(Component parentComponent, String title, int style) {
......
initDialog(dialog, style, parentComponent);
......
}
↓↓↓↓↓↓
private void initDialog(final JDialog dialog, int style, Component parentComponent) {
......
dialog.setLocationRelativeTo(parentComponent);
......
}

透過 jnlp 執行範例程式

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

文章來源:http://www.sqlite.org/lang_keywords.html

任何需要命名的物件都不可以 SQLite keywords 來命名,比如 tables, indices, columns, databases, user-defined functions, collations, virtual table modules 等。也就是一般常用的表格名稱,欄位名稱,都不可以用關鍵字來命名。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()