顯示具有 Time 標籤的文章。 顯示所有文章
顯示具有 Time 標籤的文章。 顯示所有文章

2015年7月5日 星期日

iOS Swift Time Format Compare 時間 格式 比較

Swift的時間格式化

1.ViewController.swift
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //取得日期
        let date = NSDate()
        println(date) //原始
        var formatter = NSDateFormatter();
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss";
        let date2 = formatter.stringFromDate(date);
        
        println(date2) //格式為yyyy-MM-dd HH:mm:ss
        formatter.dateFormat = "yyyy/MM/dd";
        let date3 = formatter.stringFromDate(date);
        println(date3)//格式為yyyy/MM/dd

        //比較時間
        //現在時間
        let date = NSDate()
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components([.Month, .Day], fromDate: date) //只取月,日
        let dateNow = String(format: "%02d-%02d", components.month, components.day) //NSDate 轉 字串(格式 日-月)
        //自設時間
        let formatter = NSDateFormatter()
        formatter.dateFormat = "MM-dd" //日期格式
        formatter.timeZone = NSTimeZone(name: "UTC")
        let dateSet = "03-29" //自設時間
        
        let dateA = formatter.dateFromString(dateNow)! //字串 轉 NSDate
        let dateB = formatter.dateFromString(dateSet)! //字串 轉 NSDate
        print("DateA:\(dateA)")
        print("DateB:\(dateB)")
        // 比較
        switch dateA.compare(dateB) {
            case .OrderedAscending     :   print("Date A 比 date B 早")
            case .OrderedDescending    :   print("Date A 比 date B 晚")
            case .OrderedSame          :   print("同日")
        }

    }
}
參考來源:
http://www.brianjcoleman.com/tutorial-nsdate-in-swift/
http://iswift.org/cookbook/compare-2-dates

2015年5月11日 星期一

Android Internet Time 取得 網路 時間

Candy Crush APP就是抓取手機的時間,所以修改手機時間能獲得能量,有些APP則不能,因為抓取的為網路時間
1.AndroidManifest.xml加入網路權限
    
    
2.下載commons-net-3.1.jar
在專案建立libs資料夾,放至libs資料夾裡面

3./res/layout/activity_main.xml


    

        
        

        
        
    

    

        
        

        
        
    

    

    


4.MainActivity.java
package tw.android;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.net.time.TimeTCPClient;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.provider.Settings;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
 private TextView tvPhoneTime, tvInternetTime;
 private Button btUpdateTime, btChangeTime;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
    .detectDiskReads().detectDiskWrites().detectNetwork()
    .penaltyLog().build());
  StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
    .detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath()
    .build());

  tvPhoneTime = (TextView) findViewById(R.id.tvPhoneTime);
  tvInternetTime = (TextView) findViewById(R.id.tvInternetTime);
  btUpdateTime = (Button) findViewById(R.id.btUpdateTime);
  btChangeTime = (Button) findViewById(R.id.btChangeTime);

  /* 更新時間 */
  btUpdateTime.setOnClickListener(new Button.OnClickListener() {
   public void onClick(View v) {
    updateTime();
   }
  });

  /* 前往修改手機時間 */
  btChangeTime.setOnClickListener(new Button.OnClickListener() {
   public void onClick(View v) {
    Intent intent = new Intent(Settings.ACTION_DATE_SETTINGS);
    startActivity(intent);
   }
  });
 }

 @SuppressLint("SimpleDateFormat")
 private void updateTime() {
  /* 手機時間 */
  SimpleDateFormat sTime = new SimpleDateFormat("HH:mm:ss");
  String time = sTime.format(new java.util.Date()); // 現在時間
  tvPhoneTime.setText(time);

  /* 網路時間 */
  try {
   TimeTCPClient client = new TimeTCPClient();
   try {
    client.setDefaultTimeout(60000); // 設定最長等待時間為60秒
    /* 可以前往 http://tf.nist.gov/tf-cgi/servers.cgi 選擇可用的連結點 */
    client.connect("time-nw.nist.gov"); // 取得網路時間
    String iT = sTime.format(client.getDate());// 格式處理

    tvInternetTime.setText(iT);
   } finally {
    client.disconnect(); // 關掉連結
   }
  } catch (IOException e) {
   e.printStackTrace();
  }

 }

}

檔案下載:
 https://github.com/terryyamg/InternetTimeTest
參考連結:
http://stackoverflow.com/questions/13064750/how-to-get-current-time-from-internet-in-android
http://tf.nist.gov/tf-cgi/servers.cgi
http://grepcode.com/snapshot/repo1.maven.org/maven2/commons-net/commons-net/3.1